2011-08-01 100 views
3

我一直在搞SWF上傳,我真的很喜歡它。我能夠非常輕鬆地將它應用於我的文件上傳類,而且幾乎沒有問題。然而,我遇到的問題是我需要能夠將錯誤發送給上傳者,以便用戶知道他們的文件是否由於諸如太大或格式錯誤等原因而未能完全上傳等等。我閱讀了SWF Upload的作者提供的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上傳返回500錯誤,但該文件仍然上傳。 – Throttlehead

+0

只需在標題調用之後'echo'你的消息就好了(不要讓你的'SWF上傳器'方便,但我認爲至少是錯誤函數的作用)。 – Wrikken

+0

我已經想通了。我正在使用他們在其網站上提供的處理程序腳本,並在其中找到了uploadSuccess處理函數。它只是輸出「完成」。通過將它傳遞給serverData變量,它可以完美地工作。謝謝! – Throttlehead

回答

0

我還在尋找一種顯示服務器錯誤信息的方法。基於上述意見,我能得到這個由handlers.js更新uploadSuccess()函數來工作:

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

含義,如果響應比「OK」以外的任何其他它會顯示作爲錯誤。這感覺很不好。我寧願能夠發送來自服務器的非200響應,並讓它顯示錯誤消息,但據我所知,這是不可能的。另外,我設置的方式不適用於非錯誤的自定義消息。

相關問題