0

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");

...動作しません。ファイルを fopen しようとすると...

$file = fopen("uploads/mydoc.txt", "r") or exit("Unable to open file!");

...「ファイルを開けません!」と表示されます。ファイルがディレクトリに存在しないためです。

4

1 に答える 1

2

表示する 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>

そうすれば、すべてが 1 つの形になります。あなたは含まれていないボトムフォームを送信していました<input type='file'

于 2013-04-15T12:14:29.897 に答える