【发布时间】:2011-04-23 02:12:01
【问题描述】:
我在我的 asp.net MVC 项目中使用文件上传功能。 在我开始在我的页面上使用一些 AJAX 功能之前,它一直很好用。
Ajax 页面上的 HttpPostedFile 始终为 NULL。
如何在我的页面上调用 ajax 来解决这个问题?
【问题讨论】:
标签: asp.net-mvc ajax file-upload
我在我的 asp.net MVC 项目中使用文件上传功能。 在我开始在我的页面上使用一些 AJAX 功能之前,它一直很好用。
Ajax 页面上的 HttpPostedFile 始终为 NULL。
如何在我的页面上调用 ajax 来解决这个问题?
【问题讨论】:
标签: asp.net-mvc ajax file-upload
因为您无法使用 AJAX 上传文件,所以我向您推荐出色的 jquery form plugin,它允许您对表单进行 ajaxify 并支持 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。作为一个抽象类,这将简化您的单元测试。
【讨论】:
不可能使用 ajax 发布文件上传,除非您跳过一些障碍 - 例如从 IFrame 中发布子文件,或使用基于 Flash 的解决方案之一。见https://stackoverflow.com/questions/254831/asp-net-free-ajax-file-upload-control
【讨论】:
XHR 无法归档帖子。
Asnc 文件上传使用 iframe 或一些库。
【讨论】: