当前位置: 首页 > news >正文

大文件上传实现

大文件上传实现

1.将文件切割成多个小文件
2.将小文件上传到服务器
3.后端将小文件合并成一个大文件

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>大文件上传</title>
  </head>
  <body>
    <input type="file" id="file" />
    <button id="upload">上传</button>
    <script>
      const fileInput = document.getElementById("file");
      const uploadBtn = document.getElementById("upload");

      uploadBtn.addEventListener("click", () => {
        const file = fileInput.files[0];
        const chunkSize = 1024 * 1024; // 每个切片的大小为1MB
        const chunks = Math.ceil(file.size / chunkSize); // 计算切片的数量

        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); // 切割文件

          // 将切片上传到服务器
          uploadChunk(chunk, i, chunks);
        }
      });

      function uploadChunk(chunk, index, totalChunks) {
        const formData = new FormData();
        formData.append("file", chunk);
        formData.append("index", index);
        formData.append("totalChunks", totalChunks);

        // 打印切片的信息
        console.log(`切片${index + 1}/${totalChunks}${chunk.size}字节`);

        // 发送POST请求将切片上传到服务器
        //   fetch("/upload", {
        //     method: "POST",
        //     body: formData,
        //   })
        //     .then((res) => res.json())
        //     .then((data) => {
        //       console.log(data);
        //     });
      }
    </script>
  </body>
</html>

相关文章:

  • Centos 7 升级 GCC
  • HTML 属性
  • Linux内核传输层UDP源码分析
  • AI日报 - 2025年3月17日
  • Html label标签中的for属性(关联表单控件:将标签与特定的表单元素(如输入框、复选框等)关联起来;提高可用性;无障碍性)
  • Spring单例Bean的线程安全
  • 考研系列-408真题计算机网络篇(18-23)
  • 基于SSM + JSP 的图书商城系统
  • 谷歌云服务器:服务器怎么安装???
  • 【图论】并查集的学习和使用
  • 栈(LIFO)算法题
  • Matlab 汽车振动多自由度非线性悬挂系统和参数研究
  • FakeApp 技术浅析(四):卷积神经网络
  • Spring框架:一些基本概念与核心优势解析
  • Java 中 String、StringBuffer 、StringBuffer正确使用方式
  • 开发还是运维?
  • 人工智能的数学基础之概率论与统计学(含示例)
  • 使用 `Express.js` 和 `better-sqlite3` 的最佳实践指南
  • 【QA】模板方法模式在Qt中有哪些应用?
  • 基于Python的selenium入门超详细教程(第2章)--单元测试框架unittest
  • 西昌市建设工程管理局网站/电商营销的策略与方法
  • 山东省住房城乡建设厅/怎样优化网站排名靠前
  • 常州网站建设方案托管/网站建设技术外包
  • 有没有做文创的网站/冯耀宗seo博客
  • 品牌网站建设完善大蝌蚪/网络推广的方式
  • 网站制作开发技术/app推广好做吗