位置: 编程技术 - 正文

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

  • 个人所得税纳税记录
  • 红字专票进项税额如何做
  • 事业单位净资产为负数怎么办
  • 农产品一般纳税人开普票免税吗
  • 出口货物发生退运是征税还是免税
  • 缴纳的增值税在资产负债表中怎么体现
  • 季末资产总额的计算
  • 购买土地契税和印花税什么时候交
  • 住房公积金个人和单位各承担多少
  • 坏账的处理方法包括
  • 银行存款的会计处理方法
  • 酒店前台冲账发生错误怎么办?
  • 医院外聘专家费用由科室承担吗
  • 当月用专票是增版还是增量
  • 三栏式明细账适用于哪些账簿
  • 上级工会返还的会计分录
  • 公司车辆怎么处理
  • 企业会计制度怎么备案
  • 现金存入对公账户用途写什么
  • 1697508432
  • 母公司对子公司的控股比例
  • 赠送算商业用途吗
  • 营改增服务业税负下降
  • 出口退税如何办理手续
  • 公司购进的商品自己用的,税金怎么走账
  • 推广费属于什么税收编码
  • bois如何设置启动项
  • 2016年最佳歌曲
  • 如何在win7中查找文件
  • 出口转内销发票抵扣
  • 对公账户存款利息要交增值税吗
  • 下列关于企业发生的税费说法正确的是
  • win7电脑开启麦克风权限设置
  • vue 网页
  • phpmvc框架工作原理
  • 自产商品公司自用算增值税吗
  • 应收账款怎么做账
  • php ip地址
  • configure命令
  • 管理费用科目核算的内容
  • 人力资源预算包括哪些内容
  • 个体户做账流程新手必看
  • 销售货物免税
  • 帝国cms移动端设置教程
  • sql server查询前1000条纪录
  • mysql设置查询超时时间
  • 税务申报核定销售额在哪填写
  • 税收分类编码是什么意思啊
  • 新会计准则规定
  • 纳税人信息变更 需要变更什么
  • 金蝶软件中怎么让以前年度损益调整在利润表中取不到数
  • 哪些凭证可以作为原始凭证
  • 缴纳增值税附加税
  • 应收帐款坏帐会计分录怎么处理
  • 生产车间的保险有哪些
  • 公交车ic卡网上充值
  • 会计人员基本信息表去哪找
  • 预收账款账务处理流程图
  • 贷款买车成功后,给客户什么手续
  • 委托收款商业汇票
  • win8系统怎么安装office
  • windows2008防火墙允许远程桌面
  • mac怎么使用自动切换输入法
  • linux计划任务怎么写
  • CentOS ip_conntrack: table full, dropping packet 的解决方法
  • xp桌面底部任务在右边
  • win8 开始
  • win10输入法设置快捷键
  • 蓝牙鼠标不能动了
  • nodejs异步处理执行顺序
  • sequelize-cli
  • Node.js中的construct
  • 使用粗盐热敷十大危害
  • jquery.ztree中文api
  • javascript和html区别
  • javascript总结
  • 财务报表备案流程是什么
  • 出口退税注销怎么办理
  • 定期定额发票使用流程
  • 电子税务局在线咨询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设