DropZone.js服务器端验证

时间:2013-09-27 16:53:52

标签: javascript asp.net validation webforms 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);
                    });

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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

然后,您可以使用dropzone初始配置中的以下代码处理响应(假设您将错误消息发送为&#34; ValidationMessage&#34;):

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上传失败一样。

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

相关问题