位置: 编程技术 - 正文

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

  • 事业单位交所得税是否可以报国高新
  • 房产租金收入免不免房产税?
  • 外购配套费为什么不计利润
  • 河北金税盘
  • 非增值税应税项目可以抵扣进项税吗
  • 应付账款不需要函证
  • 出租车手撕票可以换成增值税发票吗
  • 原始凭证和记账凭证的作用分别是什么
  • 税控盘反写显没有数据怎么处理
  • 开发票高校是企业还是非企业单位
  • 期房购置税怎么算
  • 管理费用是进项还是销项
  • 营业执照的注册地址怎么填
  • 会计账簿的定义及其作用
  • 申请增值税一般纳税人登记在办理手续
  • 临时工怎样做账
  • 个税退税退给个人还是单位
  • 政府补贴物业公司
  • 员工福利专票分录
  • 公司减少注册资本时,应当自作出减少
  • ghost 安装器
  • php数组函数有哪些
  • 前期差错更正怎么计算
  • PHP:session_get_cookie_params()的用法_Session函数
  • PHP:oci_fetch_object()的用法_Oracle函数
  • 贷款发生减值
  • 库拉索的死
  • 笔记本电脑盖上盖子就关机了吗
  • 会计的科类
  • php获取文本框输入的值
  • 预收账款和应收账款的账务处理
  • 收入凭证填写
  • 圣诞节英文祝福语50字
  • 旅行社的会计分录怎么做
  • 其他货币资金微利
  • 微擎框架是开源的吗
  • 净资产小于注册资本
  • 材料短缺计入成本吗
  • 销售费用和管理费用占比多少合理
  • 固定资产的会计政策有哪些
  • 企业从银行借款会导致其营运资本
  • 车辆购置税可以网上缴纳吗
  • sqlserver导入导出数据库
  • 应付劳务费怎么做账
  • 通过法院拍卖取得的土地没有得到执行属于什么案件
  • 给天猫开的服务怎么关闭
  • 其他收益属于利得吗
  • 月末结存材料的实际成本例题
  • 总公司下的分公司破产怎么赔偿
  • 存货跌价准备是什么意思
  • 固定资产原价和账面价值的区别
  • 运费在会计科目中属于什么费用
  • 驾校挂靠车辆账务处理是?
  • 劳务费能否作为农民工工资优先支付
  • 应交税费月底怎么结账
  • 公司日常费用支出表怎么做
  • 融资手续费计入长期待摊
  • 材料会计实务操作题答案
  • mysql常用查询
  • mysql的基本介绍
  • mysql ERROR 1044 (42000): Access denied for user ''@'localhost' to database
  • centos7.6无法远程
  • vista桌面为什么不能登陆
  • rundll32.exe是什么程序
  • xp启动加速
  • 系统解决问题的方法
  • win7系统如何添加打印机
  • vue拦截器的作用及使用
  • javascript HTML5文件上传FileReader API
  • python pickle 保存
  • node exit
  • shell脚本监听端口
  • bootstrap-treeview自定义双击事件实现方法
  • jquery图片左右切换
  • js怎么拿到表单提交数据
  • 代发工资法律依据
  • 国家税务总局并入财政部最新消息
  • 税务稽查工作底稿属于什么证据
  • 国税局和地税局分别征收什么税种
  • 建筑行业增值税税率2021
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设