我正在使用Dropzone.js上传Excel文件,然后将其内容导入到我的数据库中的表中。
我目前在c#中有方法检查正在上传的文件,以确保它是有效的(检查标题行)并可以导入到数据库中。
验证工作正常,理论上DropZone.js也是如此。但是,无论文件是否通过验证并且是否已导入,DropZone将始终显示“勾选/勾选”标记 - 以通知用户该操作已成功完成。
这是我的Dropzone:
Dropzone.options.forecastDropzone = {
init: function () {
thisDropzone = this;
this.on("success", function (file, Message) {
console.log(Message.Message)
toastr.info(Message.Message, {
timeOut: 0, tapToDismiss: true, preventDuplicates: true
});
});
},
};
HTML:
<form action="/Power/Upload" class="dropzone" id="forecastDropzone"></form>
正在调用的“上传”方法:
[HttpPost]
public ActionResult Upload()
{
string filename = "";
string path = "";
try
{
foreach (string fileName in Request.Files)
{
HttpPostedFileBase file = Request.Files[fileName];
path = AppDomain.CurrentDomain.BaseDirectory + "Uploads/";
filename = Path.GetFileName(Request.Files[fileName].FileName);
Request.Files[fileName].SaveAs(Path.Combine(path, filename));
ValidateExcel(path, filename);
}
}
catch
{
isSavedSuccessfully = false;
}
return Json(isSavedSuccessfully == true ? new { Message = "Successfully Saved!" } : new { Message = "Error in saving file" });
}
所以Upload方法返回一个JSON对象。我希望DropZone根据JSON中的值确定保存/导入是否成功。这可能吗?
非常感谢
答案 0 :(得分:2)
我不会尝试解析JSON响应并处理错误客户端,而是让您的服务器对此负责。
具体来说:当上传失败时,让您的服务器返回除成功HTTP 200
响应之外的其他内容。如果从服务器收到4xx
或5xx
响应,DropZone会将上传视为失败。