Php 无法使用move_uploaded_file()从临时文件中移动文件

Php 无法使用move_uploaded_file()从临时文件中移动文件,php,file-upload,Php,File Upload,我试着上传一个文件(PDF)并将其存储在某个目录中 我正在使用移动上传的文件: move_uploaded_file($_FILES["userdata"]["tmp_name"], "uploads/data/" . $_FILES["userdata"]["name"]); 脚本运行,但当我通过FTP检查目录时,什么都没有 此目录及其父目录的权限为777 我正在HTML表单中使用enctype=“multipart/form data” 有人知道我做错了什么吗 var\u转储(

我试着上传一个文件(PDF)并将其存储在某个目录中

我正在使用
移动上传的文件

move_uploaded_file($_FILES["userdata"]["tmp_name"],
      "uploads/data/" . $_FILES["userdata"]["name"]);
脚本运行,但当我通过FTP检查目录时,什么都没有

此目录及其父目录的权限为
777

我正在HTML表单中使用
enctype=“multipart/form data”

有人知道我做错了什么吗

var\u转储($\u文件)

给出:

array(2) { ["userdata"]=> array(5) { ["name"]=> string(22) "myfile.pdf" ["type"]=> string(15) "application/pdf" ["tmp_name"]=> string(14) "/tmp/phpiUJVu7" ["error"]=> int(0) ["size"]=> int(1398957) } ["userdata2"]=> array(5) { ["name"]=> string(0) "" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(4) ["size"]=> int(0) } }
我的全部代码是:

$allowedExts = array("pdf", "doc", "docx", "wps", "odt");
$temp = explode(".", $_FILES["userdata"]["name"]);
$extension = end($temp);

if ((($_FILES["userdata"]["type"] == "application/pdf")
|| ($_FILES["userdata"]["type"] == "application/msword")
|| ($_FILES["userdata"]["type"] == "application/vnd.openxmlformats-officedocument.wordprocessingml.document")
|| ($_FILES["userdata"]["type"] == "application/vnd.ms-works")
|| ($_FILES["userdata"]["type"] == "iapplication/vnd.oasis.opendocument.text"))
&& ($_FILES["userdata"]["size"] < 4000000)
&& in_array($extension, $allowedExts)) {

  if ($_FILES["userdata"]["error"] > 0) {
    echo "Return Code: " . $_FILES["userdata"]["error"] . "<br>";

  } else {
    echo "Upload: " . $_FILES["userdata"]["name"] . "<br>";
    echo "Type: " . $_FILES["userdata"]["type"] . "<br>";
    echo "Size: " . ($_FILES["userdata"]["size"] / 1024) . " kB<br>";
    echo "Temp file: " . $_FILES["userdata"]["tmp_name"] . "<br>";

        if (file_exists("upload/data/" . $_FILES["userdata"]["name"])) {
            echo $_FILES["userdata"]["name"] . " already exists. ";
        } 

        else {
          move_uploaded_file($_FILES["userdata"]["tmp_name"],
          "uploads/data/" . $_FILES["userdata"]["name"]);
          echo "Stored in: " . "upload/data/" . $_FILES["userdata"]["name"];
        }
  }
} 

else {
  echo "Invalid file";
}
$allowedExts=array(“pdf”、“doc”、“docx”、“wps”、“odt”);
$temp=explode(“.”,$\u文件[“userdata”][“name”]);
$extension=end($temp);
如果(($_文件[“用户数据”][“类型”]=“应用程序/pdf”)
||($_文件[“用户数据”][“类型”]=“应用程序/msword”)
||($_FILES[“userdata”][“type”]=“application/vnd.openxmlformats officedocument.wordprocessingml.document”)
||($_文件[“userdata”][“type”]=“application/vnd.ms works”)
||($_文件[“用户数据”][“类型”]=“iaapplication/vnd.oasis.opendocument.text”))
&&($_文件[“用户数据”][“大小”]<4000000)
&&in_数组($extension$allowedExts)){
如果($\u文件[“用户数据”][“错误”]>0){
回显“返回代码:”.$\u文件[“用户数据”][“错误”]。
; }否则{ echo“上传:.”文件[“用户数据”][“名称”]。“
”; 回显“类型:”.$\u文件[“用户数据”][“类型”]。
”; 回显“大小:”($_文件[“用户数据”][“大小”]/1024)。“kB
”; 回显“临时文件:”.$\u文件[“用户数据”][“tmp\u名称”]。“
”; 如果(文件存在(“上载/数据/”$\u文件[“用户数据”][“名称”])){ echo$\u文件[“用户数据”][“名称”]。“已存在。”; } 否则{ 移动上传的文件($文件[“用户数据”][“tmp文件名”], “上载/data/”$_文件[“userdata”][“name”]); echo“存储在:“.”upload/data/“$_文件[“userdata”][“name”]; } } } 否则{ 回显“无效文件”; }

如果语句通过,我就不会收到任何错误。

您的var_dump说您在
input
html中的文件名是
coverletter
resume
,但您正试图以
$\u文件[“userdata”]
的身份访问。试着改变一下,可能会有帮助

更新:

uploads
move\u uploaded\u file()中的一个打字错误。

也可以像这样检查
move\u upload\u file

if (move_uploaded_file($_FILES["userdata"]["tmp_name"],"upload/data/" . $_FILES["userdata"]["name"]);) {

 echo "Stored in: " . "upload/data/" . $_FILES["userdata"]["name"];

} else {

echo "Move upload seems to be struct !" ;

}

放一个
$\u文件的var\u转储
我会确保我使用的是roght目录。相对目录可能会给你惊喜。我会使用
dirname(uuu FILE_uuu)
,然后构建我的绝对路径,然后打印它并检查它是否正确。@xelCostasPena谢谢-我也尝试过添加绝对路径,例如:mysite.com.au/uploads/data/@shatheesh我在上面添加了转储的输出是的,你是对的,但这是我的错,因为我在这里改了名字,使它稍微容易一点。我已经修复了itupload的工作?如果不是,要打印echo的哪一部分?它会正确地回显所有内容。例如:存储在:upload/data/myfile.pdf您在
move\u upload\u file()中提到了
uploads/data/
。上传中的
s
是打字错误吗?啊,是的!实际上,
uploads
是正确的,但是我在if语句中有
upload
,在此之前检查重复项。因为某种原因,这把事情搞砸了。你想把它作为一个答案,让我接受吗?