$_FILES为空,enctype已设置,我以前使用过


$_FILES empty, enctype is set, I've used it before

FILES是空的,但它不应该是空的。我以前上传过文件。文件足够小,我使用enctype(对许多其他人来说这是问题)。我在上传文本文件。我还在另一个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!");

…提示"无法打开文件",因为文件在目录中不存在

将显示的HTML更改为:

<form name='saveForm' action='FTtoXML.php' enctype="multipart/form-data" method='post'>
<input type='file' name='file' id='file' onChange=document.forms['saveForm'].submit()>
<input type=hidden id=gameToSave name=gameToSave value='yes'>
</form>

这样就都是一种形式了。您提交的表单底部没有包含<input type='file'