位置: 编程技术 - 正文

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绑定事件和移除事件)

  • 增值税抵扣了还能作废吗
  • 工商年报中的社保缴费基数怎么填
  • 一税两费可以从费用中扣除吗
  • 查账征收企业所得税年报怎么填
  • 电子发票读取不出怎么办
  • 小规模纳税人帮别人报关
  • 小规模纳税人所得税税率
  • 车间管理人员工资总额占车间工资总额的10%
  • 当月发出的货还有运费吗
  • 办公室和电梯电梯哪个好
  • 如何区分境内所有银行卡
  • 服务型企业管理体系
  • 航天金税盘费用怎么做账
  • 分公司的发票可以由总公司开吗
  • 客户到款打到子公司账上如何转回
  • 增值税红字发票是什么意思
  • 申报的国家资助的一个项目如何进行账务处理?
  • 外汇汇兑损益怎么做账
  • 小规模纳税人企业所得税优惠政策最新2023
  • windows11开始菜单点击没反应
  • 2021新版win10
  • 项目盈利后收到短信
  • 缴纳上月增值税记账凭证怎么填写
  • 如何在win7系统中查看电脑基本信息
  • 企业收到的
  • 用友结转所得税费用
  • 跨年发票能不能开
  • 融资租赁怎么做到表外
  • js表单验证代码
  • 维多利亚瀑布有多高?多宽?
  • 未开票收入申报对企业有什么影响
  • 私人医院需要缴纳哪些税费
  • php jsondecode
  • dns configuration
  • php ajax
  • 平价转让股权怎么交企业所得税
  • 免征增值税的规定
  • 冲减管理费用为什么放在借方
  • 产权转移书据是什么印花税
  • php 错误提示
  • 自查补税行为有哪些方面
  • sql server 2016 sp2
  • 计提坏账准备资产总额会减少吗
  • 取报销凭证的步骤
  • 税前弥补以前年度亏损
  • 将本月发生的制造费用在甲、乙产品之间
  • 正常存货周转率多少次合适
  • 赞助费入账需要多久
  • 开发票系统税号0和o怎么区别?
  • windows进程数
  • windows8计算机在哪儿
  • win7一键升级到win10
  • win8管理工具在哪里
  • mac文档怎么传给winds
  • centos设置hostname
  • win7共享设置(详细图文步骤)
  • Mac系统修复怎么进入
  • windows10预览版怎么样
  • win10安装win7主题
  • 免打扰模式在哪关
  • 笔记本win8为什么不能连无线
  • ubuntu20.04安装配置
  • win10升级win1
  • unity 3d
  • javascript数组的应用
  • Unity符国新:3D技术将渗透到生活的各个方面
  • android开发项目实战+源码教程
  • css应用领域
  • nodejs全局异常监听
  • jquery自定义组件
  • shell脚本的实现
  • ubuntu修改默认桌面环境
  • jquery页面跳转的方法
  • python里list
  • 保险公司个人所得税扣除标准是多少
  • 四川国税发票手机查询
  • 电子税务局辽宁省
  • 个人所得税税收政策2023最新规定
  • 吉林省耕地面积有多少万亩
  • 资源税计税价格包括从坑口
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设