通过ajax的ASP.NET上传文件每次都会返回错误

时间:2016-01-25 20:08:08

标签: jquery asp.net ajax

我正在尝试通过ajax上传ASP.NET文件。我有这个ajax调用:

 $.ajax({
                                            type: "POST",
                                            url: '/Home/Upload',
                                            data: formData,
                                            dataType: 'json',
                                            contentType: false,
                                            processData: false,
                                            success: function (response) {
                                                alert('success!!');
                                                $("#" + id).attr('disabled', false);
                                            },
                                            error: function (error) {
                                                alert("errror");
                                            }
                                        });

这是我的.NET代码:

[HttpPost]
        public void Upload()
        {
            for (int i = 0; i < Request.Files.Count; i++)
            {
                var file = Request.Files[i];

                string path = Path.Combine(Server.MapPath("~/UploadedFiles"),
                                               Path.GetFileName(file.FileName));

                file.SaveAs(path);
            }

        }

当我转到文件夹时,我可以看到它已被上传,但由于某种原因,ajax会返回警告错误,请帮忙。

2 个答案:

答案 0 :(得分:1)

因为你必须归还一些东西。没有返回它总是会出错。

 [HttpPost]

    public ActionResult AsyncUpload()
    {

        for (int i = 0; i < Request.Files.Count; i++)
        {
            var file = Request.Files[i];

            string path = Path.Combine(Server.MapPath("~/UploadedFiles"),
                                           Path.GetFileName(file.FileName));

            file.SaveAs(path);
        }

        return Json(new { success = true },
            "text/plain");
    }

答案 1 :(得分:0)

您应该从服务器返回一个布尔值到客户端,以了解该过程是否正确完成。

<强> C#:

[HttpPost]
public void Upload() {
    try {
        for (int i = 0; i < Request.Files.Count; i++) {
            // your stuff
        }
        return true;
    } catch (Exception) {
        return false;
    }
}

** JS:**

$.ajax({
    // your options
    success: function (response) {
        if (response) {
            alert('success!!');
            $("#" + id).attr('disabled', false);
        } else {
            alert("an errror occurred");
        }
    },
    error: function (error) {
        alert("error");
    }
});