最近在作一个网站,用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来异步上传文件。ajax
后台获取文件信息服务器
HttpPostedFileBase postFile = Request.Files["fileUpImg"];
可是postFile对象一直为空,查看Form表单,又显示有数据,那么问题出在哪里呢?app
这个问题困扰了我一上午,而后再博问里提问,立刻就有人指出了个人错误。asp.net
问题在这里异步
@using (Ajax.BeginForm("UpdateNewInfo", "Home", new AjaxOptions() { HttpMethod = "post", OnSuccess = "afterAdd" }, new { id = "form1", enctype = "multipart/form-data" }))
原来咱们传文件的时候必须设置Form表单的enctype=”multipart/form-data”
。post
表单中enctype=”multipart/form-data”的意思,是设置表单的MIME编码。默认状况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操做.网站