首页 > 其他分享 >一文网尽关于大文件(分片)上传你需要知道的所有前置知识点

一文网尽关于大文件(分片)上传你需要知道的所有前置知识点

时间:2023-03-03 23:01:21浏览次数:53  
标签:知识点 文件 对象 FileReader FormData 网尽 File 分片 属性

分片上传知识点

一.XMLHttpRequest.upload

XMLHttpRequest.upload 属性返回一个 XMLHttpRequestUpload对象,用来表示上传的进度。这个对象是不透明的,但是作为一个XMLHttpRequestEventTarget,可以通过对其绑定事件来追踪它的进度。

事件 相应属性的信息类型
onloadstart 获取开始
onprogress 数据传输进行中
onabort 获取操作终止
onerror 获取失败
onload 获取成功
ontimeout 获取操作在用户规定的时间内未完成
onloadend 获取完成(不论成功与否)


二.formData

FormData 接口提供了一种表示表单数据的键值对 key/value 的构造方式,并且可以轻松的将数据通过XMLHttpRequest.send() 方法发送出去,本接口和此方法都相当简单直接。

  • 如果送出时的编码类型被设为 "multipart/form-data",它会使用和表单一样的格式。

  • 如果你想构建一个简单的GET请求,并且通过

    的形式带有查询参数,可以将它直接传递给URLSearchParams。

  • 实现了 FormData 接口的对象可以直接在for...of结构中使用,而不需要调用entries() : for (var p of myFormData) 的作用和 for (var p of myFormData.entries()) 是相同的。

使用

new FormData()

方法

方法名 | 描述

  • | -
    FormData.append() | 向 FormData 中添加新的属性值,FormData 对应的属性值存在也不会覆盖原值,而是新增一个值,如果属性不存在则新增一项属性值。
    FormData.delete() | 从 FormData 对象里面删除一个键值对。
    FormData.entries() | 返回一个包含所有键值对的iterator对象。
    FormData.get() | 返回在 FormData 对象中与给定键关联的第一个值。
    FormData.getAll() | 返回一个包含 FormData 对象中与给定键关联的所有值的数组。
    FormData.has() | 返回一个布尔值表明 FormData 对象是否包含某些键。
    FormData.keys() | 返回一个包含所有键的iterator对象。
    FormData.set() | 给 FormData 设置属性值,如果FormData 对应的属性值存在则覆盖原值,否则新增一项属性值。
    FormData.values() | 返回一个包含所有值的iterator对象。

为什么只用formData(multipart/form-data)进行上传大文件

application/x-www-form-urlencoded是把数据使用url编码后传送给后端,不适合用于传输大型二进制数据或者包含非ASCII字符的数据,
application/json得到的只是一个描述性JSON对象,根本就不是一个文件对象。
如果说一定得需要用json来传递的话,那么就必须得把这个原生的file对象进行转码,例如:base64,然后后端在接收的时候按照json来解析,获取那一段字符串之后重新转码生成图像文件,过程确实繁琐了。

标签:知识点,文件,对象,FileReader,FormData,网尽,File,分片,属性
From: https://www.cnblogs.com/wanglei1900/p/17177295.html

相关文章

  • Java基础易忘知识点
    Java基础易忘知识点位运算符(不完整)​ 11000101​ 10101100&:与运算 10000100 按位相与|:或运算 11101101 按位相或^:异或运算 01101001 相......
  • Python全栈面试题及知识点总结
    Python全栈面试题Python全栈阶段总结:https://github.com/HkwJsxl/PythonFullStack/tree/master/NotesPython基础基础逻辑运算v2="wupeiqi"and"alex"#第一步:将a......
  • 【MySQL速通篇001】5000字吃透MySQL部分重要知识点
    ......
  • C# MongDb踩坑记录--分片写入报错 An upsert on a sharded collection must contain t
    环境C#mongdb.drivercollection分片_id为片键报错信息Awriteoperationresultedinanerror.WriteError:{Category:"Uncategorized",Code:61,Message:......
  • spring冷门小知识点--AbstractBeanDefinition的lazyInit属性
    1.含义默认情况下,spring启动时会将所有单例bean初始化,然后放到singletonObjects(ConcurrentHashMap)(位于类DefaultSingletonBeanRegistry)里面;但有时候在一些业务场景......
  • Java关于栈(Stack)、队列(Queue)知识点拓展
    Stack类:Stack继承了Vector,而Vector类底层使用数组存储数据,Stack对象中存储的数据也是存储在数组中,常用方法:push(Edata):把数据压入栈addElement():是父类Vect......
  • 上传相关必备知识点 `<input type="file">`
    上传相关知识点<inputtype="file">带有type="file"的<input>元素允许用户可以从他们的设备中选择一个或多个文件。选择后,这些文件可以使用提交表单的方式上传到服......
  • 关于HTTP/3的小知识点
    客户端用TCP发送了三个包,但服务器所在的操作系统只收到了后两个包,第一个包丢了。那么内核里的TCP协议栈就只能把已经收到的包暂存起来,“停下”等着客户端重传那个丢失的......
  • mysql知识点一
    1.mysql中造成索引失效的原因有哪些?如何分析和解决?原因:1.like以通配符%开头索引失效通常用的索引数据结构是B+树,而索引是有序排列的优化:一种是使......
  • 知识点整理——最小环
    前言近日刷图论题遇到了多道求解最小环的例题,由于方法众多,用法不尽相同,数次被此所困扰。在互联网上寻找良久,却没能发现什么系统性的整理,所以便有了此文。求解此类问题:......