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