位置: 编程技术 - 正文

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

  • 计算土地增值税时允许扣除的项目有
  • 政府返还土地款的会计处理
  • 小规模纳税人纳税申报时间
  • 什么是进项税额转出
  • 发票多开了,要求退回重开,如何处理
  • 当月个税申报的是几月的工资表
  • 8月现金收入9月存银行如何做账
  • 社保基数申报怎么看是否成功
  • 收到投资款需要交税吗?
  • 个人劳务费 税
  • 发票查询校验码看不清怎么办
  • 结转本期会计分录
  • 异地成立分公司
  • 资产类期末借方余额怎么算
  • 计提成本会计分录
  • 宣传费税前扣除标准
  • 代理进口业务
  • 结转预交增值税会计处理
  • 计提出口关税会计分录
  • 公益性捐赠纳税调整案例
  • 发票专用章只能盖一个
  • 电子钥匙的发票怎么开
  • 建筑增值税抵扣怎么算
  • 资产类账户的期末余额计算公式
  • 股票怎么算印花税收入
  • 金融企业贷款损失准备金
  • 外地项目不预缴税款
  • 哪些收入要纳税
  • 错账按产生原因来看有两种
  • cmos电池低是什么意思
  • 实例简介php的一般过程
  • win10怎么隐藏菜单栏图标
  • 对公帐户收款
  • 公司从其他公司买一个项目花了100万
  • 汇付的注意事项有哪些内容
  • iframe更改自身src
  • 橡皮树的扦插方法和注意事项
  • 吃鸡显卡推荐配置1060 5g
  • avgnt.exe
  • php缓存原理
  • 在企业兼并时,被兼并企业价值评估的最适用假设是
  • 用java写一个helloworld
  • 职工薪酬纳税调整明细表怎么填写
  • 计算机视觉项目文档
  • python 动态
  • facebook/scribe · GitHub
  • 积分换购活动
  • mongodb 合并数据库
  • 接受捐赠的固定资产怎么计提折旧
  • 出口货物不能退税的账务处理
  • 现金股利和现金利润的区别
  • 集团公司一般怎么称呼
  • 小规模未达起征点销售额是多少
  • 无票收入是怎么算的
  • 航空货运票据可以抵扣吗
  • 2020年扶贫拨款
  • 报销运输费用
  • 辅助生产费用如何判断受益多少事指什么
  • 什么情况下可以待岗
  • 请根据你的了解叙述c++的特点,c++对c有哪些发展
  • sql server 字符串操作
  • sql中的非逻辑
  • kb4022719安装失败
  • win7全屏游戏怎么窗口化
  • fedora win10
  • 苹果电脑使用u盾怎么用
  • mac打不开以下磁盘映像
  • dgservice.exe是什么
  • osx安装win10
  • hotkey在哪
  • mac命令行指令
  • win10 系统桌面
  • macos 复制快捷键
  • ubuntu安装指南
  • win8什么时候发布
  • cocos2d-x 3.2 在window平台vs2012下解决中文乱码问题
  • 游戏新手引导架构
  • css nowrap
  • 在水贝买的黄金
  • 2023年印花税税目表
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设