zoukankan      html  css  js  c++  java
  • 前端分片上传

    关键字

    antd 分片上传

    html 文件api

    前端大文件上传

     阿里云 分片上传oss

    https://help.aliyun.com/document_detail/84786.html

    引用 https://segmentfault.com/q/1010000009304154/a-1020000010137079

    简书

    谈一谈大文件上传——前台分片和后台合并

    https://www.jianshu.com/p/bfaad1323a4c

    掘金

    用JavaScript和Node.js实现文件分片上传

    https://juejin.im/post/5db29beb5188256467245a7b

    「HTML5」FileAPI 文件操作实战

    https://juejin.im/post/5d35af63e51d454fa33b199e

    结合element-ui 的el-upload组件支持分片上传el-upload-piecess

    https://juejin.im/post/5b9b6e81f265da0ab2281ae0

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>Document</title>
      <script src="jquery-3.4.1.min.js"></script>
    </head>
    
    <body>
      <input type="file" id="file" />
      <br />
      <button id="upload">上传</button>
      <br />
      <span id="output" style="font-size:12px">等待</span>
    </body>
    
    
    <script>
      var page = {
    
        init: function () {
    
          $("#upload").click($.proxy(this.upload, this));
    
        },
        upload: function () {
    
          var file = $("#file")[0].files[0], //文件对象
    
            name = file.name, //文件名
    
            size = file.size, //总大小
    
            succeed = 0;
    
          console.log(file)
    
          var shardSize = 2 * 1024 * 1024, //以2MB为一个分片
    
            shardCount = Math.ceil(size / shardSize); //总片数
    
    
    
          for (var i = 0; i < shardCount; ++i) {
    
            //计算每一片的起始与结束位置
    
            var start = i * shardSize,
    
              end = Math.min(size, start + shardSize);
    
    
    
            //构造一个表单,FormData是HTML5新增的
    
            var form = new FormData();
    
            form.append("data", file.slice(start, end)); //slice方法用于切出文件的一部分
    
            form.append("name", name);
    
            form.append("total", shardCount); //总片数
    
            form.append("index", i + 1); //当前是第几片
    
    
    
            //Ajax提交
    
            $.ajax({
    
              url: "http://192.168.0.160:3000/mock/130/admin/user_group/getList",
    
              type: "POST",
    
              data: form,
    
              async: true, //异步
    
              processData: false, //很重要,告诉jquery不要对form进行处理
    
              contentType: false, //很重要,指定为false才能形成正确的Content-Type
    
              success: function () {
    
                ++succeed;
    
                $("#output").text(succeed + " / " + shardCount);
    
              }
    
            }) //Ajax提交
          } // end for
        } // end func 
      }
      page.init();
    </script>
    
    </html>
    

      

    <!DOCTYPE html>
    <html lang="en">

    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>Document</title>
      <script src="jquery-3.4.1.min.js"></script>
    </head>

    <body>
      <input type="file" id="file" />
      <br />
      <button id="upload">上传</button>
      <br />
      <span id="output" style="font-size:12px">等待</span>
    </body>


    <script>
      var page = {

        init: function () {

          $("#upload").click($.proxy(this.uploadthis));

        },
        upload: function () {

          var file = $("#file")[0].files[0], //文件对象

            name = file.name//文件名

            size = file.size//总大小

            succeed = 0;

          console.log(file)

          var shardSize = 2 * 1024 * 1024//以2MB为一个分片

            shardCount = Math.ceil(size / shardSize); //总片数



          for (var i = 0i < shardCount; ++i) {

            //计算每一片的起始与结束位置

            var start = i * shardSize,

              end = Math.min(sizestart + shardSize);



            //构造一个表单,FormData是HTML5新增的

            var form = new FormData();

            form.append("data"file.slice(startend)); //slice方法用于切出文件的一部分

            form.append("name"name);

            form.append("total"shardCount); //总片数

            form.append("index"i + 1); //当前是第几片



            //Ajax提交

            $.ajax({

              url: "http://192.168.0.160:3000/mock/130/admin/user_group/getList",

              type: "POST",

              data: form,

              async: true//异步

              processData: false//很重要,告诉jquery不要对form进行处理

              contentType: false//很重要,指定为false才能形成正确的Content-Type

              success: function () {

                ++succeed;

                $("#output").text(succeed + " / " + shardCount);

              }

            }) //Ajax提交
          } // end for
        } // end func 
      }
      page.init();
    </script>

    </html>
  • 相关阅读:
    分布式数据库管理系统
    Java并发(一)Java并发/多线程教程
    nginx重启后,反向代理失败之问题排查记录
    从spring源码汲取营养:模仿spring事件发布机制,解耦业务代码
    Mybatis中多表关联时,怎么利用association优雅写resultMap来映射vo
    曹工杂谈:为什么很少需要改Spring源码,因为扩展点太多了,说说Spring的后置处理器
    fastjson自由:controller上指定active profile,让你想序列化什么字段就序列化什么字段
    就因为加了Lombok的@Accessors(chain = true),bean拷贝工具类不干活了
    宽带爱折腾-将家里光猫转成桥接模式
    修改springfox-swagger源码,使example中时间格式默认为“yyyy-MM-dd HH:mm:ss”
  • 原文地址:https://www.cnblogs.com/dhjy123/p/11869046.html
Copyright © 2011-2022 走看看