Skip to main content

文件切片上传

  • 实现思路,根据文件大小,将文件切片(blob.slice)上传,服务端接收到切片后,将切片保存到临时文件夹,等到所有切片上传完成后,再将切片合并成完整文件
  1. 上传文件切片
// 文件切片上传
function uploadFileChunk(file, chunkIndex) {
const chunkSize = 1024 * 1024; // 1MB
const start = chunkIndex * chunkSize;
const end = Math.min(file.size, (chunkIndex + 1) * chunkSize);
const chunk = file.slice(start, end);
const formData = new FormData();
formData.append("chunk", chunk);
formData.append("filename", file.name);
formData.append("chunkIndex", chunkIndex);
formData.append("chunks", Math.ceil(file.size / chunkSize));
fetch("http://localhost:3000/upload", {
method: "POST",
body: formData,
}).then((res) => {
console.log(res);
});
}
  1. 上传文件
// 上传文件
function uploadFile(file) {
const chunkSize = 1024 * 1024; // 1MB
const chunks = Math.ceil(file.size / chunkSize);
for (let i = 0; i < chunks; i++) {
uploadFileChunk(file, i);
}
}
  1. 合并文件
// 合并文件

// 文件暂存于临时文件夹
// 根据文件名和切片数量,将切片合并成完整文件
function mergeFile(filename, chunks) {

}