位置: 编程技术 - 正文

jQuery用FormData实现文件上传的方法

编辑:rootadmin

推荐整理分享jQuery用FormData实现文件上传的方法,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

我们引入jQuery来进行异步上传可以获得更好的用户体验。 一方面,在JavaScript中进行异步操作比表单更加灵活; 另一方面,异步上传也避免了上传大文件时的页面长时间卡死。

HTML

一个type=file的<input>就可以让用户来浏览并选择文件, 一般会把输入控件放到一个<form>中,下面的一个简单的表单:

但为什么我只能选择一个文件??给<input>添加一个multiple属性就可以多选了!

获取文件列表

上述的<input>将会拥有一个叫files的DOM属性,包含了所选的文件列表(Array)。

这个Array中的每一项都是一个File对象,它有下面几个主要属性:

name: 文件名,只读字符串,不包含任何路径信息.

size: 文件大小,单位为字节,只读的位整数.

type: MIME类型,只读字符串,如果类型未知,则返回空字符串.

详情可以参考: 这时需要采用multipart/form-data编码的HTTP表单。

其HTTP消息体格式如下所示:

jQuery用FormData实现文件上传的方法

每个字段由一段boundary string来分隔,浏览器保证该boundary string不与内容重复, 因而multipart/form-data能够成功编码二进制数据。

jQuery上传文件

这是XMLHttpRequest Level 2提供的FormData对象可以帮助我们进行二进制文件的 multipart/form-data编码:

url, type, data想必做前端的都很熟悉了,介绍其余三个参数:

cache

cache设为false可以禁止浏览器对该URL(以及对应的HTTP方法)的缓存。 jQuery通过为URL添加一个冗余参数来实现。

该方法只对GET和HEAD起作用,然而IE8会缓存之前的GET结果来响应POST请求。 这里设置cache: false是为了兼容IE8。

参考: 因此传给data参数的对象会默认被转换为query string(见HTTP 表单编码 enctype)。

我们不需要jQuery做这个转换,否则会破坏掉multipart/form-data的编码格式。 因此设置contentType: false来禁止jQuery的转换操作。

processData

jQuery会将data对象转换为字符串来发送HTTP请求,默认情况下会用 application/x-www-form-urlencoded编码来进行转换。 我们设置contentType: false后该转换会失败,因此设置processData: false来禁止该转换过程。

我们给的data就是已经用FormData编码好的数据,不需要jQuery进行字符串转换。

兼容性与其他选择

本文介绍的jQuery文件上传方式依赖于FormData对象, 这是XMLHttpRequest Level 2接口, 需要 IE +, Firefox 4.0+, Chrome 7+, Safari 5+, Opera +

这意味着对于低版本浏览器只能使用直接提交文件表单的形式, 但提交大文件表单页面会长时间不响应,如果希望在低版本浏览器中解决该问题, 就只能使用别的方式来实现了,比如很多支持多文件和上传进度的Flash插件。

总结

标签: jQuery用FormData实现文件上传的方法

本文链接地址:https://www.jiuchutong.com/biancheng/377829.html 转载请保留说明!

上一篇:jQuery简单自定义图片轮播插件及用法示例(jquery自定义组件)

下一篇:jQuery事件绑定方法学习总结(推荐)(jquery绑定事件和移除事件)

  • 一次性医用外科口罩哪个牌子好
  • 冲回多计提费用
  • 个体户交税和个人所得税
  • 增值税申报表如何打印
  • 应交增值税二级科目借贷方向
  • 疫情捐款收据有什么用吗
  • 劳务报酬自行申报时间
  • 跨年度退货可以开红字发票吗
  • 出纳单据交接表怎么填写
  • 装饰公司开票内容怎么填
  • 盘盈固定资产属于企业的会计差错
  • 政府补贴流程
  • 向境外支付特许权使用费免征增值税
  • 研发费用加计扣除行业
  • 公司收的保证金可以打入私人账户吗
  • 付款方式公对公什么意思
  • 一个工程项目多次收款怎样预交增值税
  • 因增资扩股导致股价下跌
  • 员工离职公司需要办理什么手续
  • 文化建设事业费逾期申报有罚款吗
  • 企业试生产期间发生的费用怎么入账
  • 土地增值税清算是什么意思
  • 对账单回复函
  • 银行手续费和汇率的关系
  • 苹果的mac系统
  • window10 锁屏壁纸
  • hptasks.exe是病毒吗 是什么进程 hptasks进程说明
  • web安全如何入门
  • 售后回购怎么做会计处理
  • 经验模态分解和变分模态分解
  • 保姆级教程什么意思
  • 业务招待费的报销额度是多少
  • 网页开票流程图解
  • 债券发行费用包括
  • 社会团体不属于财政拨款的对象
  • Python打开文件的代码
  • 预付账款的会计编码是多少?
  • 简述记账后的凭证修改方法
  • 差额冲账法
  • 契税计入税金及附加吗东奥
  • 股权转让产生的个人所得税
  • 发票使用范围指什么
  • 出租车定额发票代码含义
  • 停产期间机器设备没提折旧,如何补提折旧
  • 门面转让费怎么开发票
  • 工资表里有什么
  • 合伙企业所得税率
  • 固定资产原值如何计算
  • 远程认证软件可以卸载吗
  • 待摊费用和预提费用的区别
  • 预收账款是什么资产
  • 约当产量法下的加权平均法怎么算
  • sql server的相关技术知识
  • sqlserver批量删除数据
  • 微软官方win10启动盘
  • 利用arp指令,能够防止arp欺骗吗?
  • vi编辑器使用教程
  • windows xp windows
  • windows7关机点了没反应
  • win8.1网络设置
  • 休眠后网络断开
  • win10开机多了一个账户怎么删除
  • c#7.0新语法
  • 有哪些小工具
  • 同一个文件夹中的文件可以同名吗
  • 深入理解两个大计重要论断心得体会
  • 阿里大于短信验证接口
  • 两个Collider遮挡的解决办法
  • python怎么做脚本
  • 彻底解决老鼠进发动机舱
  • 工具类软件有哪些
  • jquery实现点击按钮
  • js如何禁用按钮
  • 在电子税务局如何增加税种
  • 国税局征收管理办法
  • 督查局工作怎么样
  • 卫生志愿服务活动
  • 土地买卖谈判开场陈述
  • 内蒙古国地税联合网厅
  • 河北地税网上申报纳税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设