分片上传错误vue和springboot?
在实现分片上传的时候前端发送不到后端我的后端
不过我这个是断点续传的
在测试也可以
<template><el-upload
drag
action="http://localhost:8080/file-slices"
:auto-upload="false"
:show-file-list="false"
:on-change="changeFile"
>
<el-icon class="el-icon--upload"><upload-filled /></el-icon>
<div class="el-upload__text">
Drop file here or <em>click to upload</em>
</div>
<template #tip>
<div class="el-upload__tip">
jpg/png files with a size less than 500kb
</div>
</template>
</el-upload>
</template>
<script setup >
import { UploadFilled } from '@element-plus/icons-vue'
import SparkMD5 from "spark-md5";
import { uploadAPI } from '@/apis/upload';
import { ref } from 'vue';
import {getFileMd5} from '@/utils/spark'
//选择文件后调用
const changeFile = async (uploadFile, uploadFiles) => {
// 1.文件信息
let fileRaw = uploadFile.raw
let fileName = fileRaw.name
console.log(uploadFile)
// 2.获取 文件的 MD5唯一标识码
let fileMd5 = null
try {
fileMd5 = await getFileMd5(fileRaw)
console.log(fileMd5)
} catch (e) {
console.error('[error]', e)
}
if (!fileMd5) return
// 每片的大小为 5M 可调整
const chunkSize = 5 * 1024 * 1024
// 3.文件分片储存
let chunkList = []
//函数定义: chunkPush 是一个函数,它接受一个参数 page,其默认值为1。这个函数负责将文件分割成块并将这些块添加到 chunkList 数组中。
//const chunkPush=(page = 1) =>
function chunkPush(page = 1) {
//文件分割: 使用 fileRaw.slice() 代码来从文件中提取一个块。page 参数表示当前的页码(或者块号),chunkSize 是每个块的字节大小。
//0~5M
chunkList.push(fileRaw.slice((page - 1) * chunkSize, page * chunkSize))
//如果文件当前的序列没有到文件大小,就继续分割
//先不考虑正好
if (page * chunkSize < fileRaw.size) {
console.log('添加切片:', chunkList) // 在每次添加切片后打印当前切片列表
chunkPush(page + 1)
}
}
//递归
chunkPush()
saveFileChunk(chunkList, fileMd5, fileName)
}
// 4.保存文件片段到后台
const saveFileChunk = async (fileRaw, fileMd5, fileName) => {
for(let i = 0; i < 1; i++) {
let formData = new FormData()
formData.append('slice', fileRaw) // 当前分片的文件流
formData.append('sliceNo', 1)
formData.append('totalSliceNo', 1) // 共有多少分片
formData.append('fileMd5', fileMd5) // 整个文件的MD5唯一标识码,不是分片
// formData.append('name', fileName) // 文件的名称
// formData.append('size', chunkList[i].size) // 当前切片的大小(最后一片不一定是5M)
console.log(formData)
const save =async (formData)=>{
const { slice, fileMd5 ,sliceNo,totalSliceNo} = formData
const res= await uploadAPI( { slice, fileMd5 ,sliceNo,totalSliceNo} )
console.log(res)
}
save(formData)
}
}
</script>
前端api是
那为什么还是爆
大概是slice有问题,但是这为什么错。
我的感觉是那个格式问题就是后端的MultipartFile那边和前端对应不上,或者httpfile工具api那边错了,或者发送的不对,反正不行
以上是 分片上传错误vue和springboot? 的全部内容, 来源链接: utcz.com/p/935048.html