Php 无法使用move_uploaded_file()从临时文件中移动文件
我试着上传一个文件(PDF)并将其存储在某个目录中 我正在使用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转储(
移动上传的文件
:
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
,在此之前检查重复项。因为某种原因,这把事情搞砸了。你想把它作为一个答案,让我接受吗?