加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

js动态在form上插入enctype=multipart/form-data的问题

发布时间:2020-12-14 23:42:59 所属栏目:资源 来源:网络整理
导读:我们都知道要让form能提交文件,需要在form上指定enctype=multipart/form-data的attribute,这样才能上传文件,关于enctype的文章很多,就不再做解释。 问题是因为使用了MVC的Html.BeginForm()来输出表单代码,默认是没有加入enctype的, 复制代码 代码如下:
我们都知道要让form能提交文件,需要在form上指定enctype=multipart/form-data的attribute,这样才能上传文件,关于enctype的文章很多,就不再做解释。

问题是因为使用了MVC的Html.BeginForm()来输出表单代码,默认是没有加入enctype的,

复制代码 代码如下:

@using (Html.BeginForm()) {
}

在PartialView中有一个<input type="file" />用来上传文件,又不想为了这个PartialView去修改父页面的Html.BeginForm(),我的做法是在PartialView中用脚本来为form加入enctype:

复制代码 代码如下:

$(function(){
$('#file').parents('form').attr('enctype','multipart/form-data');
});

最近的主流浏览器都测试通过没问题,唯独IE的几个旧版本出问题,试了手工在Html.BeginForm()中加入enctype是可以解决问题的,说明问题出在以上的脚本。多方查找终于发现出题出现在于IE6,7,8不支持直接attr('enctype','multipart/form-data'),而是设置dom属性encoding='multipart/form-data',最终的脚本代码修改为:

复制代码 代码如下:

$(function () {
$('#file').parents('form').attr('enctype','multipart/form-data').get(0).encoding = 'multipart/form-data';
});

您可能感兴趣的文章:

  • 浅析application/x-www-form-urlencoded和multipart/form-data的区别
  • PHP实现支持GET,Multipart/form-data的HTTP请求类
  • 使用ngView配合AngularJS应用实现动画效果的方法
  • 测试IE浏览器对JavaScript的AngularJS的兼容性
  • 使用AngularJS实现表单向导的方法
  • 移除AngularJS下URL中的#字符的方法
  • 浅谈angularJS 作用域
  • angularjs客户端实现压缩图片文件并上传实例
  • Angular Js文件上传之form-data

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读