如何找出某些文件无法上传的原因?

时间:2015-06-29 18:07:38

标签: javascript ajax asp.net-mvc html5 file-upload

使用下面的代码,我可以成功上传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);
    }
}

0 个答案:

没有答案