乱码乱a∨中文字幕,在线免费激情视频,亚洲欧美久久夜夜潮,国产在线网址

  1. <sub id="hjl7n"></sub>

    1. <sub id="hjl7n"></sub>

      <legend id="hjl7n"></legend>

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

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

       2020-11-25 13:37  來(lái)源: 腳本之家   我來(lái)投稿 撤稿糾錯(cuò)

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

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

      前言

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

      實(shí)例代碼:

      <!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;
          //進(jìn)行初始化
          $.ajax({
            type:"POST", //請(qǐng)求方式
           url:"http://localhost:8080/getuploadId",

            async: false,
            dataType:"json", //返回?cái)?shù)據(jù)類型
            data:{//請(qǐng)求參數(shù)
              fileName:name,
            },
            success:function(data){ //請(qǐng)求成功后       
             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為一個(gè)分片,每個(gè)分片的大小
         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); //將文件進(jìn)行切片
        // 分段號(hào)
        var partNumber = i + 1;
        /* 構(gòu)建form表單進(jìn)行提交 */
        var form = new FormData();
        form.append("fileId", '001')
        form.append("data", packet); //slice方法用于切出文件的一部分
      //   form.append("lastModified", file.lastModified); //最后的額修改時(shí)間
        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", //超時(shí)10秒
         async: false, //同步
         dataType:"json",
         processData: false, //很重要,告訴jquery不要對(duì)form進(jìn)行處理
         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('未知錯(cuò)誤');
          }
         }
        })
       }
       //合并
       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", //請(qǐng)求方式
          url:"http://localhost:8080/combine",

      async: false,
           contentType:"application/json",
           dataType:"json", //返回?cái)?shù)據(jù)類型
           data:JSON.stringify(object),
           success:function(data){ //請(qǐng)求成功后       
            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異步實(shí)現(xiàn)文件分片上傳的文章就介紹到這了,更多相關(guān)ajax異步實(shí)現(xiàn)文件分片上傳內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

      來(lái)源:腳本之家

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

      申請(qǐng)創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!

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

      相關(guān)文章

      熱門(mén)排行

      信息推薦