Я новичок в области PHP. Это моя попытка загрузить файл:
<?php
if(isset($_FILES['file'])) {
$file = $_FILES['file'];
if($file['error'] === 0) {
$distination = 'uploads/';
$file_ext = pathinfo($file['name'], PATHINFO_EXTENSION);
$filename = $distination . uniqid('', true) . '.' . $file_ext;
if(!move_uploaded_file($file['name'], $filename)) {
echo "File upload failed!";
}
}
}
?>
<form action="testupload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="Upload">
</form>
возвращаемое значение из файла move_uploaded_file всегда false
. Я создаю папку uploads в том же каталоге, что и файл сценария загрузки.
Основная проблема заключается в том, что вы используете name
вместо значения tmp_name
из массива $_FILES
.
name
- оригинальное имя загруженного файла, tmp_name
- местоположение файла после загрузки. Ручная страница
Исправлена версия ниже. Я также добавил чек для каталога назначения и автоматического его создания, если он недоступен.
<?php
if(isset($_FILES['file'])) {
$file = $_FILES['file'];
if($file['error'] === 0) {
$distination = 'uploads/';
if(!file_exists($distination)){
mkdir($distination, 0777, true);
}
$file_ext = pathinfo($file['name'], PATHINFO_EXTENSION);
$filename = $distination . uniqid('', true) . '.' . $file_ext;
print_r($file);
if(!move_uploaded_file($file['tmp_name'], $filename)) {
echo "File upload failed!";
}
}
}
?>
<form action="testupload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="Upload">
</form>
uploads/
вероятно, недоступна для записи пользователю веб-сервера. Всегда разрабатывайте код сerror_reporting(E_ALL); ini_set('display_errors', 1);
сообщением об ошибках и отображением:error_reporting(E_ALL); ini_set('display_errors', 1);
и вы увидите причины неудачи.