位置: 编程技术 - 正文

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

  • 增值税应交税费和申报的不一样怎么调整
  • 代第三方收取的款项作为什么处理
  • 所得税申报资产不允许为0?
  • 所得税汇算清缴账务处理
  • 药店的主营业务有哪些
  • 未确认融资费用和长期应付款
  • 基本账户可以转移吗
  • 月末 存款
  • 跨月红冲发票如何申报退税
  • 一般纳税人必须先有进项才能开出来发票吗
  • 金税维护费申报表
  • 行政单位上年度费用做多了怎么调整成本
  • 企业增加注册资本需要缴纳什么税
  • 小规模纳税人开专票税率是1%还是3%
  • 工程咨询服务发展指导意见坚持市场培优的原则
  • 定额备用金制度有哪些
  • 佣金是否要交所得税
  • 行政事业单位工作经费使用范围
  • 物业服务费属于什么合同印花税
  • 所得税需要结转嘛
  • 外籍人员个人所得税政策
  • 资源税如何进行账务处理
  • 现金福利支出需要申报个税吗
  • 环保税优惠问题
  • 没有证书可以报特长生吗
  • linux中压缩
  • linux系统安装谷歌浏览器教程
  • php数组可以使用哪些键名
  • u启动pe装机工具怎么重装系统
  • php反射使用场景
  • 如何预防电脑系统崩溃
  • 坏账损失的核算方法属于会计政策吗
  • 数据持久化操作
  • nodejs bull
  • 魁北克老城区景点
  • 一般纳税人收到小规模专票怎么抵扣
  • vuecli3创建项目的过程
  • 社保挂靠公司收费标准是怎样的
  • ajax不刷新页面
  • 研发和技术服务税率由6%变为3%
  • 阿里什么
  • 关于成本核算的论文题目
  • python 远程控制
  • 公司基本户被冻结,其它账户也会被冻吗?
  • 单位有残疾人能享受
  • 技术服务费怎么开票税率
  • php策略模式和工厂模式的区别
  • phpipam使用
  • 帝国cms视频教程
  • 将织梦dedecms转换到wordpress
  • 公司法人的车租给公司怎么开发票
  • 印花税都有什么类目
  • 建账盘存库存商品的分录
  • 企业所得税免税和减半征收
  • 收到银行开的手续费发票如何做帐
  • 余额百分比法的会计分录
  • 管家婆销售赠品是不是自动结转成本?
  • 总账会计的岗位目的
  • win8系统安装软件在桌面找不到
  • win8.1使用技巧
  • windows常用功能
  • ubuntu下添加新用户
  • win7显示
  • winxp远程桌面
  • 登录ip怎么查位置
  • win10 build 21277
  • 批处理实例
  • 前端面试题及答案2023vue3
  • css position: absolute、relative详解
  • javascript创建对象的几种方法
  • 如何在python中运行程序
  • js日历控件代码和效果
  • python中deque
  • python不同进制的整数之间可以直接运算
  • 社保欠费税务催缴
  • 安家费购房补贴区别
  • 资产划转是什么会计科目
  • 网上交购置税怎么拿完税证明
  • 北京第六税务所电话号码
  • 残疾人的房产可以买卖吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设