【发布时间】:2016-03-16 12:34:59
【问题描述】:
我正在使用 Dropzone.js 上传一个 Excel 文件,然后将其内容导入到我的数据库中的一个表中。
我目前在我的 c# 中有方法检查正在上传的文件,以确保它有效(检查标题行)并且可以导入数据库。
验证工作正常,理论上 DropZone.js 也是如此。但是,无论文件是否通过验证并被导入,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 中的值确定保存/导入是否成功。这可能吗?
非常感谢
【问题讨论】:
-
建议:让您的服务器在上传失败时返回除了成功的
HTTP 200响应之外的其他内容。如果 Dropzone 收到来自服务器的 4xx 或 5xx 响应,Dropzone 会将上传视为失败。 -
@jszobody 这工作得很好!如果验证失败,现在返回 500 状态。非常感谢!
-
很高兴为您提供帮助!我继续并将其发布为答案,以便您接受。
标签: javascript json asp.net-mvc dropzone.js