18

Uploadify でファイルをアップロードするときにサーバーがエラー (HTTP 応答コード != 200) を返した場合、アップロードされたファイルは赤い背景になり、次のようなメッセージが表示されます。

file.jpg (52.78KB) - HTTP Error

HTTP エラーが発生したことを示します。しかし、それはユーザーにとってあまり役に立ちません。より詳細なエラー メッセージを表示するにはどうすればよいですか? のように: 「有効な画像ではありません」または「割り当てがいっぱいです」?

これらのメッセージを HTTP 応答本文で渡すことを考えていましたが、Uploadify はそれらを取得しません。Uploadify にエラー メッセージを返す既知の方法はありますか?

4

4 に答える 4

9

エラーの処理方法については、uploadify フォーラムの次の 2 つの投稿をご覧ください。

何が起きているかを表示する onErrorアップロード スクリプトのエラー レポート

そこにはたくさんの有用な情報があります..

アップデート

以下は私のためにトリックを行うようです..

'onComplete': function(a, b, c, d, e){
                    if (d !== '1')
                        {
                        alert(d);
                        }
                    else
                        {
                        alert('Filename: ' + c.name + ' was uploaded');
                        }
                  }

このバージョンの uploadify スクリプトと組み合わせる

<?php

    if (!empty($_FILES)) 
    {
        $tempFile = $_FILES['userfile']['tmp_name'];

        $targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
        $targetFile =  str_replace('//','/',$targetPath) . $_FILES['userfile']['name'];

        move_uploaded_file($tempFile,$targetFile);

        switch ($_FILES['userfile']['error'])
        {     
            case 0:
             $msg = ""; // comment this out if you don't want a message to appear on success.
             break;
            case 1:
              $msg = "The file is bigger than this PHP installation allows";
              break;
            case 2:
              $msg = "The file is bigger than this form allows";
              break;
            case 3:
              $msg = "Only part of the file was uploaded";
              break;
            case 4:
             $msg = "No file was uploaded";
              break;
            case 6:
             $msg = "Missing a temporary folder";
              break;
            case 7:
             $msg = "Failed to write file to disk";
             break;
            case 8:
             $msg = "File upload stopped by extension";
             break;
            default:
            $msg = "unknown error ".$_FILES['userfile']['error'];
            break;
        }
    }
    if ($msg)
        { $stringData = "Error: ".$_FILES['userfile']['error']." Error Info: ".$msg; }
    else
        { $stringData = "1"; } // This is required for onComplete to fire on Mac OSX
    echo $stringData;
?>
于 2010-01-07T20:01:14.707 に答える
4

残念ながら、onUploadErrorイベントは応答本体にアクセスできません。私が知る限り、200ステータスを返し、onUploadSuccessのエラーを処理する必要があります。

これが私がそれをしている方法です:

'onUploadSuccess' : function(file, data, response) {
            var responseObj = JSON.parse(data);
            if(responseObj.error_message)
            {
                $("#" + file.id).hide();   // this will hide the misleading "complete" message..
                alert(responseObj.error_message);
                return;
            }
        }

または、「完了」メッセージを次のようなエラーメッセージに置き換えることもできます。

 'onUploadSuccess' : function(file, data, response) {
            var responseObj = JSON.parse(data);
            if(responseObj.error_message)
            {
                $("#" + file.id).find('.data').css('color', 'red').html(' - ' + responseObj.error_message);
                return;
            }
            console.log(file, data, response);
        }
于 2013-01-18T19:11:45.370 に答える
2

私は同じ問題を抱えていました。何時間も検索した後、問題が見つかりました。「インターネットオプション->LAN設定」で「プロキシサーバー」を設定し、デフォルトの状態に戻すと、uploadifyが再び機能しました。

于 2013-01-23T02:43:49.993 に答える
1

uploadify バージョン 3.0+ については、onUploadSuccessオプション (具体的には data という名前の変数で渡される) を見てください。これには、サーバーがエコーしたものは何でも含まれます。JSON をエコーする場合は、次のようにデコードすることを忘れないでください。

...
'onUploadSuccess' : function(file, data, response) {
    if (response){
        var json_data=JSON.decode(data);
        /* code here */
    }
},
....
于 2012-11-15T11:34:26.633 に答える