el-upload 上传文件前 如何切片计算大文件的sha256
时间: 2024-01-27 09:42:10 浏览: 70
【JavaScript源代码】vue el-upload上传文件的示例代码.docx
为了切片计算大文件的sha256,可以使用以下步骤:
1. 获取文件对象
使用File API获取要上传的文件对象,例如:
```
const file = this.$refs.uploadInput.files[0]
```
2. 切片文件
将文件切成多个小块,每个块的大小可以自定义,例如:
```
const chunkSize = 1024 * 1024 // 1MB
const chunks = Math.ceil(file.size / chunkSize)
const chunkList = []
for (let i = 0; i < chunks; i++) {
const start = i * chunkSize
const end = Math.min(start + chunkSize, file.size)
const chunk = file.slice(start, end)
chunkList.push(chunk)
}
```
3. 计算sha256
将每个块的sha256值计算出来,并拼接成一个总的sha256值,例如:
```
const sha256List = await Promise.all(chunkList.map(async chunk => {
const buffer = await chunk.arrayBuffer()
const sha256 = await crypto.subtle.digest('SHA-256', buffer)
return sha256
}))
const totalSha256 = await crypto.subtle.digest('SHA-256', new Uint8Array(sha256List.flat()))
```
4. 使用总的sha256值进行上传
将总的sha256值作为上传参数之一,上传文件到服务器,例如:
```
const formData = new FormData()
formData.append('file', file)
formData.append('totalSha256', new Uint8Array(totalSha256))
axios.post('/upload', formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
})
```
阅读全文