-1

PHPを使用してファイルをアップロードしようとしています。スクリプトは問題なく動作する場合もありますが、そうでない場合もあります。それが機能しない場合、$_FILES 配列は完全に空です (print_r は Array() を生成します)。$_FILES["file"]["error"] が空のため、エラーチェックができません。この動作は、IE、Chrome、および Firefox で一貫しています。進行状況バーが示すように、ファイルはアップロードされているようです。

$_FILES が空であるため、scipt はそのままの状態で Invalid file type を再び返します。ファイル タイプ チェックを削除すると、move_uploaded_file は false を返し、スクリプトはカスタムの「ファイルが失敗した可能性があります」というメッセージを返します。error_reporting が返す唯一のエラーは、 $_FILES にアクセスしようとするたびにインデックスエラーです-これも空であるためです。

ファイルのアップロードの問題に関する他の質問を見てきましたが、この特定の問題を抱えている人に出会ったことはありません. 私が言ったように、スクリプトが時々機能するので、それがパーミッションの問題だとは思えません。複数のファイル タイプをテストしていますが、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"];
}
4

1 に答える 1