js動(dòng)態(tài)在form上插入enctype=multipart/form-data的問(wèn)題
更新時(shí)間:2012年05月24日 20:00:25 作者:
在做文件上傳的時(shí)候碰到了一個(gè)比較奇怪的問(wèn)題,IE6,7,8上傳文件總是失敗,服務(wù)端接收不到文件的問(wèn)題
我們都知道要讓form能提交文件,需要在form上指定enctype=multipart/form-data的attribute,這樣才能上傳文件,關(guān)于enctype的文章很多,就不再做解釋。
問(wèn)題是因?yàn)槭褂昧薓VC的Html.BeginForm()來(lái)輸出表單代碼,默認(rèn)是沒(méi)有加入enctype的,
@using (Html.BeginForm()) {
}
在PartialView中有一個(gè)<input type="file" />用來(lái)上傳文件,又不想為了這個(gè)PartialView去修改父頁(yè)面的Html.BeginForm(),我的做法是在PartialView中用腳本來(lái)為form加入enctype:
$(function(){
$('#file').parents('form').attr('enctype', 'multipart/form-data');
});
最近的主流瀏覽器都測(cè)試通過(guò)沒(méi)問(wèn)題,唯獨(dú)IE的幾個(gè)舊版本出問(wèn)題,試了手工在Html.BeginForm()中加入enctype是可以解決問(wèn)題的,說(shuō)明問(wèn)題出在以上的腳本。多方查找終于發(fā)現(xiàn)出題出現(xiàn)在于IE6,7,8不支持直接attr('enctype', 'multipart/form-data'),而是設(shè)置dom屬性encoding='multipart/form-data',最終的腳本代碼修改為:
$(function () {
$('#file').parents('form').attr('enctype', 'multipart/form-data').get(0).encoding = 'multipart/form-data';
});
問(wèn)題是因?yàn)槭褂昧薓VC的Html.BeginForm()來(lái)輸出表單代碼,默認(rèn)是沒(méi)有加入enctype的,
復(fù)制代碼 代碼如下:
@using (Html.BeginForm()) {
}
在PartialView中有一個(gè)<input type="file" />用來(lái)上傳文件,又不想為了這個(gè)PartialView去修改父頁(yè)面的Html.BeginForm(),我的做法是在PartialView中用腳本來(lái)為form加入enctype:
復(fù)制代碼 代碼如下:
$(function(){
$('#file').parents('form').attr('enctype', 'multipart/form-data');
});
最近的主流瀏覽器都測(cè)試通過(guò)沒(méi)問(wèn)題,唯獨(dú)IE的幾個(gè)舊版本出問(wèn)題,試了手工在Html.BeginForm()中加入enctype是可以解決問(wèn)題的,說(shuō)明問(wèn)題出在以上的腳本。多方查找終于發(fā)現(xiàn)出題出現(xiàn)在于IE6,7,8不支持直接attr('enctype', 'multipart/form-data'),而是設(shè)置dom屬性encoding='multipart/form-data',最終的腳本代碼修改為:
復(fù)制代碼 代碼如下:
$(function () {
$('#file').parents('form').attr('enctype', 'multipart/form-data').get(0).encoding = 'multipart/form-data';
});
您可能感興趣的文章:
- JS中使用FormData上傳文件、圖片的方法
- JavaScript將base64圖片轉(zhuǎn)換成formData并通過(guò)AJAX提交的實(shí)現(xiàn)方法
- JS FormData上傳文件的設(shè)置方法
- js使用formData實(shí)現(xiàn)批量上傳
- vuejs使用FormData實(shí)現(xiàn)ajax上傳圖片文件
- Ajax+FormData+javascript實(shí)現(xiàn)無(wú)刷新表單信息提交
- Angular Js文件上傳之form-data
- NodeJs form-data格式傳輸文件的方法
- Vue axios 將傳遞的json數(shù)據(jù)轉(zhuǎn)為form data的例子
- JS FormData對(duì)象使用方法實(shí)例詳解
相關(guān)文章
JS實(shí)多級(jí)聯(lián)動(dòng)下拉菜單類(lèi),簡(jiǎn)單實(shí)現(xiàn)省市區(qū)聯(lián)動(dòng)菜單!
JS實(shí)多級(jí)聯(lián)動(dòng)下拉菜單類(lèi),簡(jiǎn)單實(shí)現(xiàn)省市區(qū)聯(lián)動(dòng)菜單!...2007-05-05javascript 焦點(diǎn)的兩個(gè)問(wèn)題
# 頁(yè)面加載完后,光標(biāo)自動(dòng)定位到R0表單 # 問(wèn)題二:在R0表單輸入1,回車(chē)后跳轉(zhuǎn)到R1,輸入2回車(chē)后跳轉(zhuǎn)到R2,輸入3回車(chē)后跳轉(zhuǎn)到R32009-07-07