ASP.NET MVC 文件异步上传问题处理
最近在做一个网站,用asp.net MVC4.0来开发,今天遇到了个小问题,通过查找相关渠道解决了,在这里把这个问题写出来,问题非常简单,不喜勿喷,mark之希望可以给遇到相同问题的初学者一点帮助。
我要实现文件的异步上传,前端提交的文件后台老是获取不到。
我前端是这样写的:
@using (Ajax.BeginForm("UpdateNewInfo", "Home", new AjaxOptions() { HttpMethod = "post", OnSuccess = "afterAdd" }, new { id = "form1" })) { <table> <td>选择图片</td> <td> <input type="file" id="uploadImg" name="fileUpImg" /> <input type="button" id="btnFileUp" value="上传图片"/> </td> </tr> </table> }
选择一张图片,点击上传图片按钮,图片就异步上传到服务器,提交的是一个Form表单,使用ajaxSubmit来异步上传文件。
后台获取文件信息
HttpPostedFileBase postFile = Request.Files["fileUpImg"];
但是postFile对象一直为空,查看Form表单,又显示有数据,那么问题出在哪里呢?
这个问题困扰了我一上午,然后再博问里提问,马上就有人指出了我的错误。
问题在这里
@using (Ajax.BeginForm("UpdateNewInfo", "Home", new AjaxOptions() { HttpMethod = "post", OnSuccess = "afterAdd" }, new { id = "form1", enctype = "multipart/form-data" }))
原来我们传文件的时候必须设置Form表单的enctype=”multipart/form-data”
。
表单中enctype=”multipart/form-data”的意思,是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操作.