大文件上传时浏览器崩溃怎么办?

令狐景荣 阅读 53

我用普通的 FormData 上传一个 2GB 的视频文件,结果浏览器直接卡死甚至崩溃了。试过 Chrome 和 Edge 都一样。

是不是不能一次性读整个文件?有没有办法分片上传?我看到有些网站能传几十 GB 的文件,他们是怎么做到的?

现在我的代码就是最简单的这种:

const file = input.files[0];
const formData = new FormData();
formData.append('file', file);
fetch('/upload', { method: 'POST', body: formData });
我来解答 赞 5 收藏
二维码
手机扫码查看
1 条解答
设计师俊凤
文件太大,浏览器受不了。用 slice 分片上传搞定。

const chunkSize = 10 * 1024 * 1024; // 10MB
for (let start = 0; start < file.size; start += chunkSize) {
let end = Math.min(file.size, start + chunkSize);
let slice = file.slice(start, end);
let formData = new FormData();
formData.append('file', slice, file.name);
fetch('/upload', { method: 'POST', body: formData });
}


服务器端记得合并这些片段。累死个人,但确实有效。
点赞
2026-03-26 18:04