大文件上传实现

分片上传

  1. 将大文件分割成多个小片(chunk),逐个上传。
  2. 每个片上传成功后,服务器可以返回确认信息。
  3. 所有片上传完成后,服务器端将这些片重新组合成原始文件。

以下是一个简单的分片上传的前端实现示例:

javascript 复制代码
function uploadFile(file) {
    const CHUNK_SIZE = 1 * 1024 * 1024; // 1MB
    let currentChunk = 0;
    const totalChunks = Math.ceil(file.size / CHUNK_SIZE);

    function uploadChunk() {
        const start = currentChunk * CHUNK_SIZE;
        const end = Math.min(file.size, start + CHUNK_SIZE);
        const chunk = file.slice(start, end);

        const formData = new FormData();
        formData.append('file', chunk);
        formData.append('fileName', file.name);
        formData.append('chunkIndex', currentChunk);
        formData.append('totalChunks', totalChunks);

        fetch('/upload', {
            method: 'POST',
            body: formData
        })
        .then(response => response.json())
        .then(data => {
            if (data.success) {
                currentChunk++;
                if (currentChunk < totalChunks) {
                    uploadChunk(); // 递归上传下一片
                } else {
                    console.log('上传完成');
                }
            } else {
                console.error('上传失败', data.message);
            }
        })
        .catch(error => {
            console.error('上传错误', error);
        });
    }

    uploadChunk();
}

在服务器端,你需要处理接收到的片,存储这些片,并在所有片都上传完成后将它们合并。具体的服务器端实现取决于你使用的后端技术栈。

相关推荐
薛定谔的算法16 分钟前
面试官问箭头函数和普通函数的区别?这才是面试官最想听到的
前端·javascript·面试
砂糖橘加盐17 分钟前
非 AI 时代前端是如何设计一个组件的
前端·javascript·vue.js
小豪GO!18 分钟前
Java多线程初阶
java·开发语言
码农秋20 分钟前
Java Optional 最佳实践:从入门到精通的完整指南
java·开发语言·optional
艾小码22 分钟前
告别JavaScript类型转换的坑:从隐式陷阱到显式安全指南
前端·javascript
hvinsion44 分钟前
【开源工具】基于Flask与Socket.IO的跨平台屏幕监控系统实战(附完整源码)
javascript·python·flask·开源·socket.io·屏幕监控·web实战
三水彡彡彡彡1 小时前
Java中使用正则表达式的正确打开方式
java·开发语言·正则表达式
正义的大古1 小时前
GeoScene Maps 完整入门指南:从安装到实战
javascript·vue.js·geoscene maps
早睡早起头发多2 小时前
重新理解JavaScript数据类型:值类型 vs 引用类型
javascript
深耕AI2 小时前
【MFC教程】C++基础:01 小黑框跑起来
开发语言·c++·mfc