如果我使用AJAX,文件上载过程中的HttpPostedFile为NULL

时间:2010-10-08 20:45:59

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

我在asp.net MVC项目中使用文件上传功能。 在我开始在我的页面上使用一些AJAX功能之前,它工作得很好。

HttpPostedFile在Ajax页面上始终为NULL。

如何在我的页面上调用ajax来解决这个问题?

3 个答案:

答案 0 :(得分:5)

由于您无法使用AJAX上传文件,我建议您使用优秀的jquery form plugin,以便您对表单进行调整并支持file uploads。在幕后,该插件会生成一个隐藏的iframe来处理上传,对您来说完全透明:

<form id="myForm" action="/home/upload" method="post" enctype="multipart/form-data">
    <input type="file" name="file" id="file" />
    <input type="submit" value="upload" />
</form>

控制器:

[HttpPost]
public ActionResult Upload(HttpPostedFileBase file)
{
    // TODO: handle the file here
    return PartialView("success");
}

最后ajaxify形式:

$(function() {
    $('#myForm').ajaxForm(function(result) {
        alert('thank you for uploading');
    });
});

另请注意控制器操作中HttpPostedFileBase而非HttpPostedFile的使用情况。作为一个抽象类,这将简化您的单元测试。

答案 1 :(得分:0)

使用ajax发布文件上传是不可能的,除非你跳过一些箍 - 比如从IFrame中发布一个sub,或者使用一个基于Flash的解决方案。见https://stackoverflow.com/questions/254831/asp-net-free-ajax-file-upload-control

答案 2 :(得分:0)

XHR无法发帖。

Asnc文件上传使用iframe或某些库。