FILES 是空的,但它不应该是。我以前上传过文件。该文件足够小,我正在使用 enctype (对于许多其他人来说,这就是问题所在)。我正在上传txt文件。我还在另一个 php 文件中使用了相同的设置来将更大的 txt 文件上传到同一个目录,并且它可以工作(实际上我只是从另一个文件中复制了代码!)。
这是我的表格(上一个提交下一个):
<form name=fileForm action='FTtoXML.php' enctype="multipart/form-data" method='post'>
<input type='file' name='file' id='file' onChange=document.forms['saveForm'].submit()>
</form>
<form name=saveForm id=saveForm action='FTtoXML.php' enctype="multipart/form-data" method=post>
<input type=hidden id=gameToSave name=gameToSave value='yes'>
</form>
然后是一些调试php代码:
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "no file error<p>";
echo "var_dump: ".var_dump($_FILES)."<br>";
echo 'file_uploads: '. ini_get('file_uploads'). '<br />';
echo 'upload_tmp_dir: '. ini_get('upload_tmp_dir'). '<br />';
echo 'upload_max_filesize: '. ini_get('upload_max_filesize'). '<br />';
echo 'max_file_uploads: '. ini_get('max_file_uploads'). '<br />';
echo "Upload: " . $_FILES["file"]["name"] . "<br>";
echo "Type: " . $_FILES["file"]["type"] . "<br>";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
输出:
var_dump: array(0) { }
file_uploads: 1
upload_tmp_dir: /tmp
upload_max_filesize: 10M
max_file_uploads:
Upload:
Type:
Size: 0 kB
Temp file:
所以你可以看到没有名称、类型等。然后当我尝试打开文件时,
if (file_exists("uploads/" . $_FILES["file"]["name"]))
{
echo "filealreadyexists<br>";
}
是的,输出:filealreadyexists
因此,如果空文件名不存在,它似乎被视为存在?因此,稍后当我尝试移动文件时......
move_uploaded_file($_FILES["file"]["tmp_name"], "uploads/mydoc.txt");
...它不起作用,当我尝试打开文件时...
$file = fopen("uploads/mydoc.txt", "r") or exit("Unable to open file!");
...它说“无法打开文件!” 因为该文件在目录中不存在。