位置: 编程技术 - 正文

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

  • 企业间无息借款合法吗
  • 材料抵扣货款怎么写简单协议范本
  • 转出未交增值税最终怎么转平
  • 个人代开资金占用费,如何计算代扣代缴个税
  • 一般纳税人劳务派遣
  • 经营性应付项目增加导致现金流量
  • 已收货款没发货怎么退款
  • 小规模纳税人与一般纳税人区别
  • 应付福利费直接计入未分配利润
  • 转账支票支付购货款填制什么凭证
  • 企业年金个人所得税扣除标准
  • 返利抵扣货款
  • 小企业采用什么折旧方法
  • 单位日常发的钱都有哪些
  • 专用发票和普通发票费率
  • 正在注销的公司微信收的款怎么追回
  • 发票打印机的字偏上
  • 专用发票百万元版申请要求
  • 购买方红字信息表开具流程图
  • 小规模纳税人需要做账吗
  • 新公司没有实收资本,他的钱从哪来
  • 出售专利权属于什么科目
  • 分期开发是什么意思
  • 一张发票上可以开几行
  • 抽奖得奖
  • macbook右上角
  • 压缩文件夹发给别人他能看到我桌面上的文件吗
  • 广告业年终总结
  • 招待费报销制度规定
  • 企业筹资付给第三方账户
  • psr.exe是什么意思
  • mac如何修改照片的尺寸大小
  • 公司购买车怎么做
  • 职业病治疗费用谁承担
  • PHP:spl_autoload_call()的用法_spl函数
  • uniapp安装插件
  • 木卫一距离木星多远
  • ui.exe啥意思
  • 本月营业利润
  • php模板引擎原理
  • 纳税人未抄报税不能进行申报,怎么办
  • phpcms v9官网
  • 如何用python绘制
  • 财务会计该如何处理客户以个人账号转款到公司公账?
  • 电子发票和纸质发票的优缺点
  • 建筑工程租赁费属于什么费用
  • 以前年度损益调整
  • 不得抵扣增值税的情形
  • 股权转让是否需要全体股东签字
  • 银行多扣了钱法律是怎么判
  • 营改增的服务
  • 公司支付的培训费需要交税吗
  • 客户赔款会计科目
  • 班车租赁费计入福利费吗
  • 刻章发票可以抵扣吗
  • 房地产会计相关内容
  • zmweb.exe是什么进程
  • ubuntu软件安装
  • ubuntu20.04配置
  • centos新建终端快捷键
  • Linux系统配置要求
  • linux操作系统安装方法有哪几种
  • win10访问局域网文件
  • windows8怎么隐藏任务栏
  • 雨林木风软件网
  • TestOpenGL
  • Android 开源项目集合
  • jquery ztree api
  • jquery移动端ui
  • intent传递数据的方法
  • unity3d inspector
  • python wms
  • JavaScript中的变量名不区分大小写
  • jquery实现轮播图步骤
  • python守护线程与非守护线程
  • jQuery Easyui datagrid/treegrid 清空数据
  • 浙江增值税发票勾选认证流程
  • 深圳车牌注销需要车辆到场吗
  • 土地增值税分期清算条件?
  • 什么是深入调研工作
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设