2

我正在对上传的文件进行服务器端验证。并非所有进入服务器的文件都被存储。如何显示/触发未成功存储在服务器上的文件的错误。我试过添加服务器验证功能,但不知道怎么做......请帮忙

                  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);
                    });
4

2 回答 2

3

通过将以下代码添加到 Dropzone.js 然后在我从服务器返回的 JSON 中看到错误时从我的“successmultiple”事件中调用它来解决我的问题。

 Dropzone.prototype.serverError = function (file, message) {
                file.accepted = false;
                file.status = Dropzone.ERROR;
                return this._errorProcessing(file, message);
            };
于 2013-10-18T16:10:23.817 回答
0

对于在寻找此问题的解决方案后来到这里的其他任何人:有一种非常简单而优雅的方式来处理这个问题,而无需进入 Dropzone 的内脏。如果您的服务器端验证失败,请返回状态代码 400(错误请求)并将您的错误消息包含为 jsonResponse。

然后,您可以在 dropzone 的 init 配置中使用类似以下代码的代码来处理响应(假设您将错误消息作为“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 上传失败一样。

此解决方案适用于单个上传而不是多个,但相同的想法应该适用于多个。

于 2015-07-15T18:58:25.537 回答