使用下面的代码,我可以成功上传xlsx文件而没有任何问题,但是当我尝试上传相同文件的csv版本时,它永远不会到达控制器。所以我尝试了其他的csv文件,其中一些工作正常,其他人也没有碰到控制器。
没有出现任何错误,所以我真的不知道该怎么做才能进一步排除故障。我甚至不确定如何在asp.net获取请求之后但是在它到达控制器之前,或者在它被发布之前是否发生了问题。关于我接下来可以看到什么的任何建议?
HTML:
<div>
<input type="file" name="file" id="uploadFile" />
</div>
JavaScript的:
$('#uploadFile').on('change', function (e) {
var files = e.target.files;
if (files.length > 0) {
if (window.FormData !== undefined) {
var data = new FormData();
for (var x = 0; x < files.length; x++)
data.append("file" + x, files[x]);
$.ajax({
type: "POST",
url: '/Home/UploadFile',
contentType: false,
processData: false,
data: data,
success: function (result) {
if (result)
alert('File uploaded.');
else
alert('Error uploading file :(');
},
error: function (xhr, status, p3, p4) {
var err = "Error " + " " + status + " " + p3 + " " + p4;
if (xhr.responseText && xhr.responseText[0] == "{")
err = JSON.parse(xhr.responseText).Message;
}
});
} else {
alert("This browser doesn't support HTML5 file uploads :(");
}
}
});
控制器:
[HttpPost]
public JsonResult UploadFile()
{
try
{
if(Request.Files.Count == 0)
throw new ArgumentException("No file to upload!");
var fileContent = Request.Files[0];
if(fileContent != null && fileContent.ContentLength > 0)
{
Session["ImportFileId"] = ImportFiles.Save(fileContent.InputStream);
return Json(true);
}
else
return Json(false);
}
catch(Exception)
{
Response.StatusCode = (int)HttpStatusCode.BadRequest;
return Json(false);
}
}