上传档案其实还有蛮多议题可以讨论,那我们今天就一一道来XD
档案上传昨天我们有提到,可以用FormData的型式,透过API传给後端。
由於新版的XMLHttpRequest的优化,XMLHttpRequest提供progress事件,可以提供进度资讯。档案传输下载或上传时,可以利用progress事件知道目前的进度。
今天我们要使用的范例是使用axios,不同的方法语法上有些许不同,不过概念上都是一样的。透过progress事件,取得上传进度。
HTML
<input type="file" @change="updateFile">
<button @click="submit">上传</button>
<p>上传进度: {{progress}}</p>
Javascript
// 选取档案
updateFile(e){
this.file = e.target.files[0];
},
//上传档案
submit(){
let fd = new FormData()
form.append('file', this.file)
let config = {
onUploadProgress: progressEvent => {
let complete = (progressEvent.loaded / progressEvent.total * 100 | 0) '%'
this.progress = complete
}
}
axios.post(`APIURL`,fd, config).then((res) => {
if (res.data.status === 'success') {
console.log('上传成功')
}
})
}
Checksum,也可以称杂凑码(hash sum)。是透过杂凑演算法(Ex.MD5、SHA-1、CRC32、SHA-256...)计算而成一个独一无二的数字文字组合。只要input相同,透过同样的演法计算,output的checksum一定相同。在上传档案时,会用checksum用来检查档案是否完整或正确。
分片上传的意思是:我们会把档案做切割,分成一块一块的小分片,上传至後端,再由後端合并起来。
1个档案 = 多个block
1的block = 多个chunk(片)
chunk只是上传时的临时单位,一般server会设计在固定的时间清除没有被合并成档案的chunk
为什麽要这麽麻烦呢?又要怎麽做呢?接下来介绍一下分片上传的概念~
由於每种程序的写法可能会有些许差异,今天我们就介绍分片上传的流程想法~
档案上传真的蛮多东西可以探讨,包含续传、秒传等等,
但只要大概理解这些档案相关的观念,在实作上都可以更容易地去应用开发~~
<<: 【後转前要多久】# Day19 BootStrap - 排版切版 Layout (Row、Col?)
>>: 【Day19-颜色】眼前的黑不是黑,你说的白是什麽白?——浅谈图片资料的色彩空间
在後续章节里,我们将使用 IntelliJ IDEA 示范如何编辑 Gradle 的 Build S...
在时间序列分析中相当有名的一个数学模型,差分整合移动平均自回归模型,又名为ARIMA模型,我们就来介...
安装 stylebot 进入 邦帮忙 打开 Stylebot 开启代码页 输入以下代码 .head...
接下来就是我要将测试放入现在正在进行的api中了 在这次的测试中,我想测试mRequest.Get(...
宣告变数的资料型别 1.数值( Number ) 2.字串( String ) 3.布林值( Boo...