2

在 .NET MVC 3 项目中,我一直在为 AJAX 文件上传而苦苦挣扎,并且在研究过程中发现了几个问题。

首先,Stack Overflow 上似乎有很多问题表明无法通过 AJAX 上传文件。我认为所有这些答案都来自 XMLHttpRequest Level 2 规范之前的时间,但现在更新它们可能是个好主意。

考虑到我当前的问题,我正在尝试管理上传到我的控制器中,但是我遇到了很大的困难,因为我无法使用 HttpPostedFileBase 加载上传的文件(就像我在普通表单文件上所做的那样上传)。

我的问题是……为什么会这样?我的意思是...当您通过 AJAX 发送文件时,发送到服务器的 POST 包含与通过表单发送文件时相同的信息,不是吗?并且文件仍然在 Request.Files 中,然后......为什么控制器不能将该信息绑定到作为参数传递给控制器​​的 HttpPostedFileBase 实例?

编辑:我按照评论中的建议添加了 AJAX 上传代码示例:

$("#uploadButton").click(function () {
    if (window.FormData) {
        var theFile = $('input[type="file"]').get(0).files[0];
        var formData = new window.FormData();
        formData.append("importedFile", theFile);
        $.ajax({ async: false,
            url: $.url("Courses/Import/"),
            type: "POST",
            data: formData,
            cache: false,
            processData: false,
            contentType: "multipart/form-data",
            success: function (res) {
                $("#response").innerHTML = res;
            }
        });
        return false;
    }
});

在服务器端,控制器:

[HttpPost]
public ActionResult Import(HttpPostedFileBase importedFile) {
    //Here importedFile is null, however Request.Files[0] contains the uploaded file.
}
4

0 回答 0