2013-10-08 48 views
0

我使用V3.9 UI使用jQuery包裝:處理IE瀏覽器,它不處理檔案大小等

現在,我已經內IE9解決了我的「超過最大請求長度」的錯誤(從這裏開始: FineUploader Error Handling )。我所有的FineUploader代碼都在這個其他鏈接中,並不認爲我需要再次發佈它。

我現在正在尋找一種更好的方式,讓IE用戶知道他們何時試圖上傳過大的文件(Chrome,FF用戶會收到太大的文件警報,所以這不是問題) 。我不認爲我需要混淆'消息'選項,因爲這些選項適用於所有其他瀏覽器。它的IE不能正常工作! IE用戶將使用他們選擇的文件一直到達服務器。爲了處理上傳超過fileSize屬性的文件,我在我的服務器端檢查了內容長度>'n'的代碼,如果是,則返回JSON success = false。如下所示:

[HttpPost] 
    public JsonResult UploadFile(HttpPostedFileWrapper qqfile, int surveyInstanceId, int surveyItemResultId, int itemId, int loopingIndex) 
    {   
      bool isValid = false; 

      // file is too big, throw error. 
      if (qqfile.ContentLength > (1024*1024*2.5)) 
      { 
       return CreateJsonResult(false);      
      } 

     More Code here if the file is 'good' 
    } 

    private JsonResult CreateJsonResult(bool isSuccess) 
    { 
     var json = new JsonResult(); 
     json.ContentType = "text/plain"; 
     json.Data = new { success = isSuccess }; 
     return json; 
    } 

這會縮短基於大小的無效文件上傳。太好了,但是我可以返回的不僅僅是success = false,並且FineUploader使用這個額外的JSON值來向用戶顯示更有用的消息嗎?目前所有顯示的是「上傳失敗」。如何引用該無效文件的特定html元素,以便添加更具描述性的錯誤?

此外,我有.on('錯誤')方法,但我不知道如何觸發此。這將是一個看起來很合理的地方,因爲文件上傳大小問題是一個錯誤。幫幫我?謝謝。

回答

1
  1. 使用Content-Length來執行文件大小限制並不是一個好主意。 Fine Uploader發送的所有上傳請求默認都是多部分編碼的。多部分編碼請求的Content-Length是ENTIRE請求的大小,而不僅僅是文件。
  2. 在對最後一個問題的回答發表評論時,我指出了文檔的一個特定部分,它允許您在Fine Uploader UI模式下控制文件旁邊顯示的失敗文本。您所要做的就是將failedUploadTextDisplay選項的mode屬性設置爲「自定義」。在服務器端,返回錯誤消息文本,您希望在失敗的文件旁邊顯示您的JSON響應的「錯誤」屬性。有關更多詳細信息,請參閱"handling errors" documentation section的底部。

UPDATE

看起來你正在使用它返回上傳文件的大小HttpPostedFileWrapperContentLength財產。起初,這對我來說有點困惑,因爲內容長度通常指的是請求的大小。這個屬性的名稱是微軟方面的一個不好的名稱,恕我直言。所以,你可以在我的答案中忽略#1。