位置: 编程技术 - 正文

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
  • 与收益相关政府补助区分总额法净额法吗
  • 原材料计划价实际价区别
  • 变电站是否缴纳房产税
  • 商品税目编码表查询
  • 税盘没有抄报各月,有罚款吗
  • 无形资产软件摊销年限是多少
  • 自然人税收管理扣缴端(原个税)申报实训
  • 工资本月计提下月发放,个税如何计算做账
  • mac应用程序安装权限在哪找
  • 无偿取得股权账务处理
  • 应收票据借贷方核算什么内容
  • 会计中如何区分借方和贷方
  • 异地增值税预交可以网上缴纳吗
  • 微信订阅项目
  • 对公账户转私人账户手续费多少
  • 在承租的土地上建房
  • 原材料结转成本的会计分录例题
  • 增值税中非经营活动包括哪些
  • php strtok
  • npm info: node: --openssl-legacy-provider is not allowed in NODE_OPTIONS
  • 资产处置损益和待处理财产损溢区别
  • 无偿转让房屋
  • 转让土地需要办什么手续
  • java+php
  • 备发工资的会计科目
  • php正则表达式匹配,返回原因
  • three.js入门指南
  • php如何实现
  • free命令看到的内存
  • 累计折旧大白话
  • 认缴制对实务操作的可能影响有哪些?
  • 员工预支款项及报销流程
  • 勾稽关系怎么算
  • 如何确定固定资产是否已经发生减值
  • 汽车加油增值税专用发票
  • mysql all
  • 小规模纳税人认定标准500万
  • 小规模减免增值税政策
  • 小规模纳税人代账费用
  • 非货币性资产含义
  • 一般纳税人改成小规模可以吗
  • 在建工程转出到什么科目
  • 收到广告费分录
  • 机票电子行程单查询
  • 盘盈存货账务处理
  • pe市盈率法
  • 坏账准备具有什么功能
  • 去税局购买税盘要注意什么
  • 企业利润怎么算出来的
  • 两台mac怎么同步
  • linux缺省的shell
  • centos7如何添加光盘
  • Remind_XP.exe - Remind_XP是什么进程 有什么用
  • win8怎么调整显示器亮度
  • myminer.exe是什么
  • linux !!
  • [置顶]马粥街残酷史
  • css设置段落
  • unity she
  • js几种类型
  • 税务税收预测
  • 纳税申报的期限是多久
  • 2020年个体税收政策
  • 扬州退契税政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设