位置: 编程技术 - 正文

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

  • 小规模纳税人销售农产品税率是多少
  • 预收账款属于什么科目借贷方向
  • 企业所得税税款可以扣除吗
  • 注销公司详细步骤
  • 采购的固定资产验收无误后直接安装使用
  • 差旅费报销单是外来原始凭证吗
  • 税务局多扣的一笔钱
  • 股本与注册资本实收资本的区别
  • 固定资产年数总额法
  • 接受虚开增值税 经侦立案
  • 工程咨询服务发展指导意见坚持市场培优的原则
  • 未实缴出资的股东退股
  • 收客户逾期利息账务处理怎么做?
  • 支付保险费发票怎么入账
  • 原材料做成库存会计分录
  • 出口退税未收汇已申报
  • 境外所得纳税
  • 国税注销了地税没注销现在经营异常
  • 酒店客房主营业务支出明细表怎么写
  • 在公司发现问题该说吗
  • 公司购买二手车怎么抵税
  • 购买电力维修材料怎么做分录?
  • 2019年核定征收税率表
  • 劳务费的现金流量是什么
  • 职工福利费计提标准是多少
  • 工资的结转
  • 开启网络共享后怎么使用
  • 合同作废印花税法规定
  • 定额发票可以抵进项税吗
  • iphone系统推送
  • PHP:xml_parse_into_struct()的用法_XML解析器函数
  • 新买的苹果电脑需要注意什么
  • ghost后分区没有了
  • 圣伊利亚斯山
  • docker 使用教程
  • 企业车辆按揭的利弊分析
  • 前期差错更正怎么理解
  • 坏账损失可以做销项税转出吗
  • php后端开发流程教程
  • 什么情况下计提信用减值损失
  • 固定资产抵账的增值税
  • 会计人员报销差额是多少
  • 融资购入的固定资产如何记账
  • 只申报个税不交社保
  • 简述时期指标和时点指标的特点
  • 深入理解php
  • 企业盘盈的固定资产其核算的会计科目是
  • 施工企业的人工费占比
  • 合伙企业的经营所得税率
  • 本期应纳税额减征额怎么算
  • 个人出租非住房房产税
  • java中public修饰什么
  • 费用报销重复了怎么写情况说明
  • sqlserver2005连接到服务器
  • mysql常见错误
  • 公司报销金额有限制吗
  • 所得税费用是什么意思
  • 公司跟个体户的税收
  • 归纳投入外币资产怎么写
  • 电商企业银行账户是什么
  • 应纳税所得额计算公式excel
  • 结存材料实际成本计算公式
  • 企业自查补交增值税
  • 职工体检费如何报销
  • 如何调优产业结构
  • Win10 Mobile Build 10549正式推送:须回滚到WP8.1升级
  • windows怎么拨号
  • 开机停在american megatrends
  • linux中的查找命令
  • linux 查找语句
  • Cocos2d-js 3.x: 像素触摸
  • perl格式化输出 %s
  • xml能写网页吗
  • jsp下拉框跳转到相应页面
  • python字典x in d
  • jquery选择器写法
  • 税务系统跨区调动
  • 商铺缴纳契税需要复印件吗
  • 深圳海关属于省级吗
  • 杭州国税电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设