位置: 编程技术 - 正文

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

  • 耕地占用税的特点与意义
  • 个人所得税的会计科目
  • 锦州税务师考试在哪个学校
  • 咨询合同按什么交印花税
  • 零余额账户出纳做什么
  • 收到借户过账资金的短信
  • 农产品加计扣除政策2023最新
  • 模具可以申请专利吗
  • 缴纳补充公积金的外企
  • 公司开发票就会报税吗?
  • 农牧业没有发票怎么办
  • 开店卖蔬菜
  • 定期存款利息税是多少
  • 工会经费可以不提吗
  • 免税个体户发票税率多少
  • 商品进销差价的核算方法
  • 专用发票和普通发票的税率
  • 户外拓展费用入什么科目
  • windows10如何开启vt
  • 英雄联盟怎么改左键移动
  • 息税前利润变化率计算
  • 事业单位工资及薪酬好的单位有哪些
  • 企业收到科技创新发票
  • 什么是馥芮白
  • 服务器时间总是不对
  • 应付债券包括
  • 企业所得税纳税调整事项有哪些
  • u盘格式化技巧
  • 本地运行库是什么
  • 发行债券的会计分录摊销
  • laravel框架中文手册
  • 使用灭火器人要站在上风口还是下风口
  • 持有至到期投资减值准备
  • php不能通过浏览器运行吗
  • 企业税负率过高的坏处
  • yaf框架优缺点
  • 累计折旧在贷方还是借方
  • ufw 设置
  • 加盟代理需要什么手续
  • 增值税报税后多久缴纳期限
  • 长期股权投资成本怎么计算
  • 个税申报系统升级要多久
  • 织梦系统如何更换网站内容
  • 织梦cms官网
  • 公司茶水间管理规定
  • 进项税额转出冲减进项税额吗
  • 办公室购买电脑计入
  • mysql存储过程查看权限
  • 印花税的其他凭证指的是什么
  • 房产契税什么时候退税
  • 支付土地租金计入什么科目里面
  • 广发银行的主营业务
  • 营改增之前广告位出租
  • 应缴纳房产税的房产
  • 青苗赔偿管理办法
  • 分公司是否可以享受六税两费政策
  • windows vista界面
  • mac系统不能用
  • linux安装mailx
  • fedora怎么样
  • 微软9月补丁
  • win8.1流畅吗
  • windows 高分屏
  • linux常用命令行
  • hmies.exe是什么
  • nicconfigsvc.exe - nicconfigsvc是什么进程 有什么用
  • 越狱免电脑
  • vps如何搭建ss
  • win10预览版好吗
  • cocos2d教程
  • android 坐标系
  • nginx日志路径配置
  • 利用的拼音
  • jquery easyui validatebox remote的使用详解
  • Linux 中的time函数
  • c++ 编程
  • jquery元素选择器有哪些
  • 水利基金税率‰6什么时候调整
  • 人事科负责人是否必须是党员?
  • 中国进口奶粉关税税率表2019
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设