Изображение загрузки файла PHP не загружается на сервер
Я пытаюсь загрузить файл изображения через php, и он не работает:
<?php
$target_dir = "/home/NAME/uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
move_uploaded_file($_FILES['fileToUpload']['name'], $target_dir);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
print_r($_FILES);
?>
Это то, что возвращается, но на самом деле никакой файл не загружается. Кто-нибудь знает, что происходит? Спасибо
Array ( [fileToUpload] => Array ( [name] => followers.png [type] => image/png [tmp_name] => /tmp/phpKsuz1B [error] => 0 [size] => 127008 ) )
3 ответа
Изменить:
move_uploaded_file($_FILES['fileToUpload']['name'], $target_dir);
Для того, чтобы:
move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)
+ Изменить move_uploaded_file($_FILES['fileToUpload']['name'], $target_dir);
в move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $target_dir);
move_uploaded_file
для загрузки требуется временное имя файла, а не оригинальное имя файла, так как для его перемещения требуется ресурс.
Загруженный файл на самом деле $_FILES['fileToUpload']['tmp_name']
это файл, который вам нужно переместить.
Хороший способ сделать это:
$tempFile = $_FILES['fileToUpload']['tmp_name'];
$destFile = '/dest/directory/' . $_FILES['fileToUpload']['name'];
// You'll now have your temp file in destination directory, with the original image's name
move_uploaded_file($tempFile, $destFile);
Хорошей практикой является сохранение уникальности имен файлов, поскольку вы никогда не знаете, когда могут быть названы разные изображения. image01.jpg
(чаще, чем можно было бы надеяться).
$tempFile = $_FILES['fileToUpload']['tmp_name'];
$destDir = '/dest/directory/';
$destName = uniqid() . '_' . $_FILES['fileToUpload']['name'];
$destFile = $destDir . $destName;
// Temp file is now in destination directory, with a unique filename
move_uploaded_file($tempFile, $destFile);