位置: 编程技术 - 正文

jQuery用FormData实现文件上传的方法

发布时间:2024-02-27

推荐整理分享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
  • 工业企业成本会计核算的对象是什么
  • 房地产开发企业资质等级有几个
  • 房地产企业融资存在的问题
  • 五证合一流程
  • 法院案件受理费计算器
  • 企业所得税扣除凭证
  • 工会账务期末结转
  • 进项发票认证多了留抵
  • 工资手续费可以在发放里扣除吗
  • 税控盘怎么打票
  • 有限合伙企业对外转让财产份额
  • 自用房屋的房产税怎么缴纳
  • 合同违约补偿款需要缴纳增值税吗?
  • 滞留发票的税收处理
  • 城建税教育附加税的会计分录
  • 价外费用的会计和税务处理
  • 企业收付款流程图
  • 企业的利润分配顺序
  • 应收账款收款后怎么做账
  • 分公司税款
  • 软件外包付款流程
  • 公司冲销费用凭证是什么
  • realtek自动安装
  • php文件类型码
  • 利用的英文
  • 赠品没有收到
  • PHP:spl_autoload_unregister()的用法_spl函数
  • linux怎么检查网络状态
  • 生育津贴如何做账
  • 参加《2022 中国开发者影响力盛典》我的 4 重收获!
  • 发票失控进项转出
  • 微信手续费由谁承担
  • 其他应收账款为个人借款
  • mysql转数字为字符串
  • 规划设计费会计分录
  • 出口销售收入要交印花税吗
  • 下列行为免征增值税的有
  • 个人所得税10月份申报期
  • 什么是认缴出资金额
  • 其他应收款和应收账款一样吗
  • 无形资产专利技术属于
  • 个人所得税如何计算
  • 工程设备租赁有哪些
  • 企业与股东之间的关系,也是企业与投资者之间的关系
  • 房产契税什么时候退税
  • 堤围防护费是什么
  • 手撕定额发票可以抵扣吗
  • 这个月要交增值税怎么做账务处理
  • 哪些住宿费不属于差旅费
  • 会计损益类科目有哪些,期末如何结转?
  • 销售净利润怎么算
  • 在mysql中使用mysql workbench创建数据库
  • MySql 5.6.14 winx64配置方法(免安装版)
  • mysql数据库windows
  • windows进程数
  • win7系统远程
  • linux使用方式有哪些方面
  • win7的系统
  • win8系统出现闪屏
  • javascript中怎么创建一个数组
  • firefox background-image垂直平铺问题的解决方法
  • 安卓调用系统相机
  • android 开源
  • javascript对象和方法
  • jquery和css的区别
  • Jquery和BigFileUpload实现大文件上传及进度条显示
  • javascript怎么做
  • 开专票需要什么资料
  • 税控盘开票怎么赋码的教程
  • 车间租金计入什么会计科目
  • 四川税控
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号