2011-08-01 9 views
3

私はSWFアップロードを使いこなしていましたが、本当に好きです。非常に小さな問題でファイルアップロードクラスに簡単に適用できました。しかし私が抱えている問題は、アップローダーにエラーを返すことができるようにする必要があるため、ファイルが実際に完全にアップロードされなかったかどうかをユーザーが知っています。 、等。 SWFアップロードの作者が提供するPHPのサンプルスクリプトを読みましたが、エラーを返す方法を理解できません。これは、エラー処理関数です。SWFアップロード:エラーを返す

/* Handles the error output. This function was written for SWFUpload for Flash Player 8 which 
cannot return data to the server, so it just returns a 500 error. For Flash Player 9 you will 
want to change this to return the server data you want to indicate an error and then use SWFUpload's 
uploadSuccess to check the server_data for your error indicator. */ 

function HandleError($message) { 
    header("HTTP/1.1 500 Internal Server Error"); 
    echo $message; 
} 

したがって、uploadSuccess関数はサーバーからの応答を期待しています。それを "header()"を使ってエンコーディングして送信するにはどうしたらいいですか?

私はこれを使用する場合:

header("HTTP/1.1 200 Uploaded File was Successful"); 

SWFのアップロードが成功を返しますが、そのメッセージがuploadSuccess関数に通ってくるしません。

+0

HttpResponse :: setCache(true); HttpResponse :: status(200); HttpResponse :: setContentType( 'text/html'); HttpResponse :: setData( 'これはエラーテキストです'); HttpResponse :: send(); このような試みをすると、SWF Uploadは500のエラーを返しますが、ファイルはまだアップロードされています。 – Throttlehead

+0

ヘッダーを呼び出した後にメッセージを 'echo'するだけです(あなたの 'SWFアップローダー'は便利ではありませんが、少なくともエラー関数が何であるかは分かります)。 – Wrikken

+0

私はそれを理解しました。私も彼らのウェブサイトで提供するハンドラスクリプトを使用していました。その中にuploadSuccessハンドラ関数があります。それはちょうど「完了」を出力していた。 serverData変数を渡すことによって、完全に動作します。ありがとう! – Throttlehead

答えて

0

また、サーバーからのエラーメッセージを表示する方法も探していました。応答が「OK」以外であれば、それが表示されます、

if (serverData != null && serverData != "ok"){ 
    progress.setError(); 
    progress.setStatus(serverData); 
} else { 
    progress.setStatus("Complete."); 
} 

意味:上記のコメントに基づいて、私はこれはにhandlers.jsでuploadSuccess()関数を更新することで動作するように取得することができましたエラーとして。これはかなりハッキリと感じます。私はむしろ、サーバーから200以外の応答を送信して、それからエラーメッセージを表示することができますが、これまで不可能だったことはわかります。また、私が設定した方法は、エラーではないカスタムメッセージに対しては機能しません。

関連する問題