正在从自定义表单HTML上载文件


Uploading File from Custom Form HTML

我正试图将自定义HTML表单中的一个文件上传到PHP脚本中。这是我HTML中的代码。

<form action="test.php" method="post" enctype="multipart/form-data">
    <input id="txt" class="button" type = "text" value = "Choose File" onclick       ="javascript:document.getElementById('file').click();">
    <input id = "file" type="file" style='visibility: hidden;' name="img"    onchange="ChangeText(this, 'txt');"/>
   <input type="submit">
</form>

这是test.php文件:

ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(-1);
$target = "i/";
if (move_uploaded_file($_FILES['img']['tmp_name'], $target)) {
     echo "The file " . basename($_FILES['img']['name']) . "has been uploaded";
} 

这是页面上的错误:

警告:move_uploaded_file((:copy((函数的第二个参数不能是第7行/var/www/BLOCKED/test.php中的目录

警告:move_uploaded_file((:无法将第7行/var/www/BLOCKED/test.php中的"/tmp/phpNxxB72"移动到"i/"。是的,它的目录权限是777。

move_uploaded_file的第二个参数应该是文件名(带路径(,而不是目录

$target = "i/".basename($_FILES['img']['name']);

错误是正确的。move_uploaded_file()的第二个参数不是目录,它应该是一个文件。您只需要将文件名附加到第二个参数中的$target。例如:

if (move_uploaded_file($_FILES['img']['tmp_name'], $target.$_FILES['img']['name'])) {
    echo "The file " . basename($_FILES['img']['name']) . "has been uploaded";
}

move_uploaded_file函数应该是这样的:

move_uploaded_file($_FILES['img']['tmp_name'], $target. $_FILES["img"]["name"])

在末尾添加文件名,因为$target只是一个目录/文件夹。

Tantibus,如您所阅读:

http://php.net/manual/en/function.move-uploaded-file.php

您必须为目标文件指定文件名。

$target = "i/".basename($_FILES['img']['name']);

你可能错过了这个。