PHP文件上传图像未加载到服务器


PHP file upload image not loading to server

我正试图通过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 ) )

更改:

  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);