0

csv ファイルをアップロードして、mysql データベースに自動的に保存できる Web サイトの一部を作成しました。move_uploaded_file 関数を設定して、正しくアップロードされていることを確認できるようにしましたが、何かをアップロードしようとするたびに失敗します。

フォーム

<form enctype="multipart/form-data" action="LoadData.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000">
Upload File: <input name="uploadedfile" type="file"><br />
File/Table Name: <input name="filename" type="text"><br />
<input name="submit" type="submit" value="Upload File">
</form>

アップロードコード

$FileName = $_POST['filename'];
$target_path = "/director/to/all/uploaded/files/" . $FileName;

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path))
{
    echo "File uploaded correctly </br>";

    //uploads file to database
    mysql_query("LOAD DATA LOCAL INFILE....."); //long piece of code that uploads the csv file to the database.table
    echo "Table imported <br/>"';
}
else
{
    echo "The file was no uploaded correctly, the table was not imported.";
}

確認したところ、$_FILES 配列は空ではありませんが、ファイルが存在し、完全な権限を持っていることを確認した新しいディレクトリにファイルが作成されていません。私の構文も正しいと確信しています。move_uploaded_file(/temporary/file/location/tmp_name.csv, /new/file/location/test.csv) どこが間違っているか分かる人はいますか?

更新 1

print_r($_FILES) の結果

( [アップロードされたファイル] => 配列 ( [名前] => Final1.csv [タイプ] => テキスト/カンマ区切り値 [tmp_name] => /tmp/phpVnOIUK [エラー] => 0 [サイズ] => 11607 ) )

更新 2

解決策は見つかりませんでした。簡単な答えがあると思われる場合は、投稿してください。ただし、今のところ、問題を回避してみます。

4

1 に答える 1

2

あなたのコードはやみくもに成功を想定しています。アップロードが成功したと思い込まないでください。ボイラープレートのアップロード処理コードは、次のようになります。

if ($_FILES['uploadedfile']['error'] === UPLOAD_ERR_OK) {
   // it worked, handle the upload
   ...
} else {
   die("Upload failed with error code: " . $_FILES['uploadedfile']['error']);
}

エラーコードはここで定義されています: http://php.net/manual/en/features.file-upload.errors.php

于 2013-06-25T15:37:49.923 に答える