位置: 编程技术 - 正文

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

  • 企业所得税行业所得率
  • 小规模纳税人定期定额征收的怎么报税
  • etc发票可以抵扣进项税吗
  • 税控盘如何统计开票金额
  • 财务人员培训费怎么入账
  • 天猫积分购物券可以退吗
  • 劳务有预付款吗
  • 什么是资本性支出和支出
  • 转给子公司发工资分录
  • 如何使用发票对冲个人所得税
  • 专用发票二维码压线
  • 营改增后房地产企业账务处理
  • 全额抵扣的发票怎么申报增值税
  • 增值税一般纳税人证明怎么查询
  • 异地存货管理
  • 个人所得税免征项目有哪些
  • 2021年沙子水泥税率是多少
  • 预提工程成本的会计分录
  • 免征增值税的进项税额如何处理
  • 小规模纳税人 行业
  • 未达起征点的个体户个人所得税
  • 公司商品质量问题导致员工与公司一起被起诉了怎么办
  • 金税盘红字信息表金额大于原蓝票
  • 股权投资收入会计处理
  • 诉讼过程中
  • 该内存不能为read是怎么回事
  • 费用发票可以抵扣吗
  • 收到法院的案件款应该怎么做帐
  • wifi信号弱了
  • windows 阅读软件
  • 作废的普通发票,顾客联拿不回来
  • 哪些发票不能进账
  • 愚人二部曲
  • 进口应税消费品所支付的金额不包括
  • 饭店的手撕发票可以报销吗
  • 基于transformers的nlp入门 pdf
  • 行政单位基建账如何并入大账
  • 作为大学生你能为国家安全贡献哪些力量论文
  • 合伙企业退伙个税
  • 微信公众号的推送
  • 营业外收入账务处理方法
  • 税金及附加包括哪些
  • 货款必须对公帐户支付吗
  • 资本成本在财务报表中怎么体现
  • 有外币业务的银行
  • 税务登记程序有哪些
  • 融资租赁开什么发票
  • 收到政府给员工的礼物
  • 一般纳税人增值税减免政策2023
  • 领款单有法律效力吗
  • 资金占用费怎么写
  • 补报印花税税需要提供什么材料
  • 办公设备维修费会计分录
  • 财务费用利息属于什么科目
  • 呆账坏账对应五级分类
  • 机动车销售折让红字信息表
  • 小规模纳税人增值税计算公式
  • 日记账的建账工作
  • mysql查询结果是什么类型
  • mysql总是安装失败
  • 写出linux安装的详细步骤
  • linux怎么用命令
  • ora01804怎么解决windows
  • 重装系统 xp
  • nginx 虚拟ip
  • win8系统更新在哪里
  • centos怎么样
  • 紧跟潮流的句子
  • Linux中的stat命令使用简介
  • js对象属性值
  • 在dos中文件是以什么目录结构
  • python 控制台交互
  • 用Fragment+ViewPager搭建万能的android界面
  • shell脚本怎么写循环
  • c# unity ioc
  • unity与android交互详细
  • 内蒙古国家税务
  • 退伍军人坐火车要钱吗
  • 云南省国家税务局电子税务局
  • 资源税是地方税吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设