我正在尝试使用php上传文件。该脚本有时完美无缺,但有时却没有。当它不起作用时,$ _FILES数组完全为空(print_r产生Array())。我无法进行错误检查,因为$ _FILES [“file”] [“error”]为空。通过IE,Chrome和Firefox,行为是一致的。该文件似乎正在进度条指示上传。
原样的scipt会再次返回无效的文件类型,因为$ _FILES为空。如果我删除文件类型检查,move_uploaded_file返回false并且脚本返回我的自定义“文件可能已失败”消息。每当我尝试访问$ _FILES时,error_reporting返回的唯一错误就是索引错误 - 再次因为它是空的。
我已经看到了有关文件上传问题的其他问题,但我没有遇到任何有这个特定问题的人。我不认为这是一个权限问题,因为,正如我所说,脚本有时会工作。虽然我正在测试多种文件类型,但我只尝试上传mp3文件。
ini_set('display_errors',1);
error_reporting(E_ALL);
print_r($_FILES);
if (($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "application/pdf")
|| ($_FILES["file"]["type"] == "audio/mpeg")
|| ($_FILES["file"]["type"] == "audio/x-mp3")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
{
if ($_FILES["file"]["error"] > 0)
{
echo "\nReturn Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "\nUpload: " . $_FILES["file"]["name"] . "<br />";
echo "\nType: " . $_FILES["file"]["type"] . "<br />";
echo "\nSize: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "\nTemp file: " . $_FILES["file"]["tmp_name"] . "<br />";
$fname = basename($_FILES["file"]["name"]);
$put_file = $_POST["put_dir"] . "/" . $fname;
echo "\nDestination File: " . $put_file . "<br />";
if(move_uploaded_file($_FILES["file"]["tmp_name"], $put_file))
{
echo "The file " . $fname . " has been uploaded";
}
else
{
echo "The file " . basename( $_FILES['file']['name']) . " may have failed";
}
}
}
else
{
echo "Invalid file type: " . $_FILES["file"]["type"];
}
答案 0 :(得分:0)
您的HTML表单必须具有enctype =“multipart / form-data”属性,是吗?