婷婷久久综合九色综合,欧美成色婷婷在线观看视频,偷窥视频一区,欧美日本一道道一区二区

<tt id="bu9ss"></tt>
  • <span id="bu9ss"></span>
  • <pre id="bu9ss"><tt id="bu9ss"></tt></pre>
    <label id="bu9ss"></label>

    當(dāng)前位置:首頁 >  站長 >  編程技術(shù) >  正文

    ajax異步實現(xiàn)文件分片上傳實例代碼

     2020-11-25 13:37  來源: 腳本之家   我來投稿 撤稿糾錯

      阿里云優(yōu)惠券 先領(lǐng)券再下單

    這篇文章主要給大家介紹了關(guān)于ajax異步實現(xiàn)文件分片上傳的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

    前言

    使用Ajax上傳文件的應(yīng)用場景頗多,比如上傳用戶頭像、博客文章中插入圖片、對認(rèn)證用戶相關(guān)身份進行校驗等等很多很多。這篇文章主要介紹了關(guān)于ajax異步實現(xiàn)文件分片上傳的相關(guān)內(nèi)容,下面話不多說了,來一起看看詳細的介紹吧

    實例代碼:

    <!DOCTYPE html>
    <html lang="en">
    <head>
     <meta charset="UTF-8">
     <title>JS分片上傳-極速上傳</title>
    </head>
    <body>
     <input type="file" name="slice" id="slice" >
     
     <div id="output"><!-- 信息存放地 --> </div>
    <br/>
    </body>
    <script src="

    http://libs.baidu.com/jquery/1.8.3/jquery.min.js</script>

    <script type="text/javascript">
     $("#slice").change(function(event) {
      var file = $("#slice")[0].files[0];
      var name = file.name;
        //進行初始化
        $.ajax({
          type:"POST", //請求方式
         url:"http://localhost:8080/getuploadId",

          async: false,
          dataType:"json", //返回數(shù)據(jù)類型
          data:{//請求參數(shù)
            fileName:name,
          },
          success:function(data){ //請求成功后       
           console.log("data.code="+JSON.stringify(data));
           console.log("data.data.objectName="+data.data.objectName);
           console.log("data.data.uploadId="+data.data.uploadId);  
           var objectName=data.data.objectName;
           var uploadId=data.data.uploadId;
           //成功后執(zhí)行分段上傳
           PostFile(file,0,objectName,uploadId);
           //合并
           combineFile(objectName,uploadId);
           
           
           },
          error:function (){
           alert("系統(tǒng)出現(xiàn)異常!");
           flag=false;
          }
         });
      
     
     });
     //執(zhí)行分片上傳
     function PostFile(file,i,objectName,uploadId){
      var name = file.name,       //文件名
       size = file.size,       //總大小shardSize = 2 * 1024 * 1024,
       shardSize = 1 * 1024 * 1024,    //以2MB為一個分片,每個分片的大小
       shardCount = Math.ceil(size / shardSize); //總片數(shù)
      if(i >= shardCount){
       return;
      }
      //console.log(size,i+1,shardSize); //文件總大小,第一次,分片大小//
      var start = i * shardSize;
      var end = start + shardSize;
      var packet = file.slice(start, end); //將文件進行切片
      // 分段號
      var partNumber = i + 1;
      /* 構(gòu)建form表單進行提交 */
      var form = new FormData();
      form.append("fileId", '001')
      form.append("data", packet); //slice方法用于切出文件的一部分
    //   form.append("lastModified", file.lastModified); //最后的額修改時間
      form.append("name", name);
      form.append("totalSize", size);
      
      form.append("uploadId", uploadId);
      form.append("objectName", objectName);
      form.append("mainFile", packet);
      form.append("total", shardCount);
      form.append("sortNumber", partNumber);
      
      //uploadId:uploadId,
      //objectName:objectName,
      //mainFile:blob,
      //total:partCount,
      //sortNumber:partNumber
      
      if(shardCount === i+1){
       shardSize = size - i * shardSize
      }
      form.append("shardSize", shardSize);
      form.append("total", shardCount); //總片數(shù)
      form.append("index", i + 1); //當(dāng)前是第幾片
      $.ajax({
       // header: {
       //  web_token: "cpBvqWrr0UK9zPJoKj+412alxxcY6qFwrSVoO0juZg0S1jX/sGfMd9oi3AsSxW+MdWFrwtGCykUTmMqrqpbCElmT75DfB87lENC7lCuMxgF0d5wQB6yAubUVyGOzhbrScvIfD8ZSjOJ3D88AOy2xRd4oG8TxeGoMoZqnqIwjKg="
       // },
       url:"http://localhost:8080/multipartupload",

       type: "POST",
       data: form,
       //timeout:"10000", //超時10秒
       async: false, //同步
       dataType:"json",
       processData: false, //很重要,告訴jquery不要對form進行處理
       contentType: false, //很重要,指定為false才能形成正確的Content-Type
       success: function (data) {
        console.log("data="+JSON.stringify(data));
        /* 表示上一塊文件上傳成功,繼續(xù)下一次 */
        if (data.data.code == 1) {
         form = '';
         i++;
         PostFile(file, i,objectName,uploadId);
        } else if (data.data.code == 502) {
         form = '';
         /* 失敗后,每2秒繼續(xù)傳一次分片文件 */
         setInterval(function () { PostFile(file, i,objectName,uploadId) }, 2000);
        } else if (data.data.code == 200) {
         console.log("上傳成功");
        } else if (data.data.code == 500) {
         console.log('第'+msg.i+'次,上傳文件有誤!');
        } else {
         console.log('未知錯誤');
        }
       }
      })
     }
     //合并
     function combineFile(objectName,uploadId){
       console.log("objectName="+objectName);
       console.log("uploadId="+uploadId);
       var object=new Object();
       object.objectName=objectName;
       object.uploadId=uploadId;
        $.ajax({
        
         headers: {
          Accept: "application/json; charset=utf-8"
        },
         type:"POST", //請求方式
        url:"http://localhost:8080/combine",

    async: false,
         contentType:"application/json",
         dataType:"json", //返回數(shù)據(jù)類型
         data:JSON.stringify(object),
         success:function(data){ //請求成功后       
          console.log("data="+JSON.stringify(data));
          console.log("data.data.code="+data.data.code);
          console.log("data.data.url="+data.data.url);  
         },
         error:function (){
          alert("系統(tǒng)出現(xiàn)異常!");
          flag=false;
         }
        });      
     
     
     }
     
    </script>
    </html>

    總結(jié)

    到此這篇關(guān)于ajax異步實現(xiàn)文件分片上傳的文章就介紹到這了,更多相關(guān)ajax異步實現(xiàn)文件分片上傳內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

    來源:腳本之家

    鏈接:https://www.jb51.net/article/198844.htm

    申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點子。點擊此處,共同探討創(chuàng)業(yè)新機遇!

    相關(guān)標(biāo)簽
    ajax
    JS文件合并
    代碼設(shè)計

    相關(guān)文章

    熱門排行

    信息推薦