2013-09-27 180 views
2

我正在爲上傳的文件進行服務器端驗證。並非每個文件都存儲在服務器上。如何顯示/觸發未成功存儲在服務器上的文件上的錯誤。我試着將服務器驗證功能,但無法弄清楚如何做到這一點...請幫助DropZone.js服務器端驗證

    this.on("successmultiple", function (file, successResponse) { 
         uploadResult = eval(successResponse); 
         toastr.options.positionClass = "toast-bottom-right"; 
         var ErrorMessage = ""; 
         for (var i = 0; i < uploadResult.ResultList.length; i++) { 
          var result = uploadResult.ResultList[i]; 
          if (result.IsSuccessful === "True") { 
           toastr.success(result.Message); 
           if (hdnFileIDList !== "") 
            hdnFileIDList = hdnFileIDList + "|" + result.ID; 
           else 
            hdnFileIDList = result.ID 
          } 
          else { 
           //-- trigger dropzone error 
           toastr.warning(result.Message); 
           //this.ValidationError(file, result.Message); 
           file.accepted = false; 
           file.status = Dropzone.ERROR; 
           dropzone.serverError(file, result.Message); 
           //dropzone.emit("errormultiple", file, result.Message); 
          }         
         } 
         $("#<%=hdnSharedFileObjNewFileIDList.clientID%>").val(hdnFileIDList); 
        }); 

回答

3

解決我的問題,加入以下代碼Dropzone.js然後從我的「successmultiple叫它「事件,當我看到和從服務器返回的JSON錯誤。

Dropzone.prototype.serverError = function (file, message) { 
       file.accepted = false; 
       file.status = Dropzone.ERROR; 
       return this._errorProcessing(file, message); 
      }; 
0

爲了其他任何人在這裏降落尋找一個解決這個問題後:有一個非常簡單而優雅的方式來解決這個問題並不進入懸浮窗的膽量。如果您的服務器端驗證失敗,請返回狀態碼400(錯誤請求)並將錯誤消息包含爲jsonResponse。

然後你就可以處理的東西,如在懸浮窗的初始化配置下面的代碼的響應(假設您發送您的錯誤消息「ValidationMessage」):

this.on("error", function (file, jsonResponse) { 
    var errorMessage = "Could not upload document: "; 
    if (jsonResponse["ValidationMessage"] != null) { 
     errorMessage += jsonResponse["ValidationMessage"]; 
    } else { 
     errorMessage += "unknown error"; 
    } 
    alert(errorMessage); 
}); 

文件將有一個大紅色的X就像普通的Dropzone上傳失敗一樣。

此解決方案適用於單一上傳而不是多個,但相同的想法應適用於多個。