我正在为上传的文件进行服务器端验证。并非存储进入服务器的每个文件。如何在未成功存储在服务器上的文件上显示/触发错误。我已经尝试添加服务器验证功能但无法弄清楚如何操作...请帮助
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);
});
答案 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上传失败一样。
此解决方案适用于单个上传而非多个,但相同的想法应适用于多个。