最近在作一個網站,用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,才能完整的傳遞文件數據,進行下面的操做.網站