成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

Vue.Js及Java實現文件分片上傳代碼實例

瀏覽:7日期:2022-08-31 09:53:54

說明

代碼從項目中剝離修改,未經測試,僅提供思路。

前端

upload(file) { //從后臺獲取已經上傳的文件分片數 getIdx(md5) .then(function(res) { let retry = 3; uploadPart(retry, file, res.data); }) .catch(); }uploadPart(retry, file, idx) { //設置分片大小(單位Byte) let bufferLength = 1024 * 1024 * 5; //計算開始的切割點,idx是上傳成功的分片數,未上傳過文件則開始點為0 let start = idx * bufferLength; //全部上傳完畢或重試次數用完則退出 if(start>=file.size || retry<=0) return; //計算分割的位置 let end = start + bufferLength; //如果分割點超出文件大小,回退分割點 if (end > file.size) {end = fileSize;} //切割文件 var chunk = file.slice(start, end); //創建 formData 對象并添加數據 let formData = new FormData(); formData.set('file', chunk); //如果是第一次上傳,連同文件塊數量也上傳 if (start == 0) { //計算文件切片總數,向上取整 let chunkNum = Math.ceil(file.size / bufferLength); formData.set('total', chunkNum); } //上傳文件的api,此處使用axios發送請求 doUpload(formData) //發送成功,則上傳下一片,遞歸調用方法 .then(function() { retry = xx;//刷新重試次數 uploadPart(retry, file, ++idx); }) //發送失敗 .catch(function() { retry--;//重試次數減一 //重試上傳這一片 uploadPart(retry, file, idx); });},

文件分片上傳的前端關鍵代碼只有一句:

//切割文件var chunk = file.slice(start, end);

通過slice方法來切割文件,然后文件上傳的流程視業務和具體技術而定,此處是使用axios發送請求,用遞歸調用上傳文件塊。需要注意的是,Blob.slice(start, end),文件塊包含start指向的字節,而不包含end指向的字節,在使用時要注意Blob的邊界。

mozilla對slice的說明

后端

/**合并文件的實際操作*/public static void doMergeFiles(String outFile, String[] files) { //設置緩存大小 int BUFSIZE = 1024 * 1024; //排序。文件后綴名是文件的順序。 Arrays.sort(files); //輸出流 FileChannel outChannel = null; //標記最后的一個文件 String lastFlag = files[files.length-1]; try { outChannel = new FileOutputStream(outFile).getChannel(); //遍歷文件列表 for(String f : files){ //最后一塊文件用真實大小設置緩存,避免自動填充數據造成的md5不一致 if(lastFlag.equals(f)){File last = new File(f);BUFSIZE = (int) last.length();//獲取文件的大小并設置成緩存的大小 } FileChannel fc = new FileInputStream(f).getChannel(); //用ByteBuffer創建緩存 ByteBuffer bb = ByteBuffer.allocate(BUFSIZE); while(fc.read(bb) != -1){//把數據讀到緩存bb.flip();//重置游標outChannel.write(bb);//寫入數據bb.clear();//清空數據 } fc.close();//關閉流 } } catch (IOException ioe) { ioe.printStackTrace(); } finally { try {if (outChannel != null) {outChannel.close();}} catch (IOException ignore) {} }}

  后端的關鍵是合并文件,當上傳完最后一塊文件就進行文件的合并。使用ByteBuffer緩存,使用FileChannel進行文件的讀寫完成合并操作。在保存文件時,文件名取一致,文件的后綴名則取文件塊的順序,比如第一塊文件是“xxx.01”,第10塊是“xxx.10”,注意,個位數前面要補“0”,這樣可以直接用Array.sort()進行排序。

  為提高性能,可以適當設置緩存大小,可以邊上傳文件邊合并,不必等到文件都上傳了才合并。

拓展

  此處的文件上傳是一次上傳一片,上傳成功才開始上傳下一片。如果前端不是使用javascript,能開啟使用多線程的話,可以改成同時上傳多片文件提高上傳速度。已經上傳的文件分片用bitmap存儲,上傳文件前,從后臺獲取已上傳的文件分片的bitmap數據然后解析,多線程處理未上傳的文件分片。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
欧美激情91| 日韩精品三区四区| 日本午夜精品一区二区三区电影| 亚洲韩日在线| 综合久久久久久久| 欧美日韩高清免费| 国产色婷婷亚洲99精品小说| 波多野结衣亚洲| 7777精品伊人久久久大香线蕉完整版 | 婷婷国产在线综合| 中日韩在线视频| 亚洲综合免费观看高清在线观看| 亚洲欧洲另类| 亚洲美女屁股眼交3| 日韩视频中文| 亚洲综合一区二区精品导航| 亚洲开发第一视频在线播放| 中文字幕亚洲不卡| 午夜日本精品| 国产欧美视频在线观看| 91视频免费看| 欧美激情在线看| 一区精品久久| 一区二区三区**美女毛片| 一区二区免费在线视频| 亚洲一区二区三区中文字幕在线 | 久久免费黄色| 蜜桃视频在线观看一区| 欧美亚洲国产一卡| 久久99精品国产91久久来源| 欧美顶级少妇做爰| 成人污污视频在线观看| 精品国产一区二区精华| 色综合视频在线观看| 国产欧美一区二区三区在线看蜜臀| 你懂的网址国产 欧美| 欧美—级在线免费片| 亚洲视屏一区| 一区二区不卡在线播放 | 国产精品色哟哟| 伊人狠狠色j香婷婷综合| 亚洲精品国产精品乱码不99| 久久精品观看| 精久久久久久久久久久| 精品美女被调教视频大全网站| 91美女片黄在线| 国产精品毛片a∨一区二区三区| 99精品免费| 热久久一区二区| 制服丝袜成人动漫| 99re热这里只有精品视频| 国产精品久久久久久久久晋中| 国产精品一区亚洲| 久草精品在线观看| 久久久久国产精品人| 狠狠爱www人成狠狠爱综合网 | av在线不卡电影| 国产精品天干天干在线综合| 99视频国产精品免费观看| 首页综合国产亚洲丝袜| 欧美一区二区三区电影| 欧美视频福利| 视频一区视频二区在线观看| 91麻豆精品国产91久久久资源速度| 91在线看国产| 亚洲电影你懂得| 欧美日韩国产精选| 欧美在线二区| 亚洲一区视频在线观看视频| 欧美午夜电影在线播放| www.亚洲国产| 一区二区欧美国产| 欧美精品在线视频| 99国产精品国产精品毛片| 亚洲色图20p| 69成人精品免费视频| 亚洲午夜在线| 国产精一品亚洲二区在线视频| 国产精品午夜电影| 在线观看视频91| 日韩午夜电影av| 亚洲二区三区四区| 热久久一区二区| 国产日韩欧美在线一区| 国产农村妇女精品一二区| 国产精品香蕉一区二区三区| 综合久久一区二区三区| 555www色欧美视频| 亚洲乱亚洲高清| 国产精品一区二区不卡| 国产精品短视频| 91精品国产综合久久久蜜臀图片| 亚洲久久视频| 成人综合日日夜夜| 亚洲动漫第一页| 久久久亚洲综合| 在线亚洲精品福利网址导航| 欧美日韩中文| 精品亚洲成av人在线观看| 中文字幕欧美一| 日韩小视频在线观看专区| 日韩视频在线一区二区三区| 成人在线综合网| 视频一区中文字幕| 综合在线观看色| 精品少妇一区二区三区免费观看 | 久久久国产精华| 久久久久一区| 91婷婷韩国欧美一区二区| 日韩经典中文字幕一区| 欧美国产日本视频| 制服丝袜成人动漫| 香港久久久电影| 欧美先锋影音| 国产成人8x视频一区二区| 亚洲成人免费看| 国产精品日韩成人| 91精品国产综合久久精品| 国产精品一区二区三区观看| 欧美国产高清| 国产精品亚洲а∨天堂免在线| 亚洲一区二区欧美激情| 国产日韩欧美精品电影三级在线 | 精品福利一区二区三区| 久热国产精品| 在线欧美日韩| 成人午夜视频福利| 另类欧美日韩国产在线| 一级做a爱片久久| 国产精品美女www爽爽爽| 欧美成人女星排名| 欧美日韩午夜在线视频| 亚洲一区二区网站| 国产精品成人观看视频免费| 成人午夜激情在线| 日本美女一区二区| 夜夜嗨av一区二区三区网页 | 性做久久久久久久久| 国产精品久久久久aaaa樱花| 久久综合色天天久久综合图片| 欧美日韩视频不卡| 久久精品午夜| 在线一区欧美| 亚洲高清成人| 欧美久久久久| 99久久免费精品高清特色大片| 激情综合色播激情啊| 亚洲卡通动漫在线| 国产精品国模大尺度视频| 欧美videofree性高清杂交| 欧美日韩激情一区二区| 91豆麻精品91久久久久久| 乱人伦精品视频在线观看| 99日韩精品| 亚洲福利电影| 在线日韩av| 1024日韩| 亚洲国产高清视频| 黑人巨大精品欧美一区二区小视频| 午夜久久黄色| 你懂的一区二区| av一区二区三区四区| 成人午夜av电影| 成人国产精品免费观看动漫| 丰满亚洲少妇av| av中文一区二区三区| 97成人超碰视| 欧美一区二区在线| 欧美连裤袜在线视频| 欧美午夜视频| 日韩午夜电影| 国产精品毛片一区二区三区| 国产精品资源| 色婷婷国产精品| 欧美视频一区在线| 777奇米四色成人影色区| 欧美丰满少妇xxxbbb| 日韩欧美在线一区二区三区| 精品免费一区二区三区| 久久久久久久电影| 欧美国产丝袜视频| 亚洲色欲色欲www| 亚洲成人激情自拍| 日韩av中文字幕一区二区三区| 久久99精品国产91久久来源 | 久久岛国电影| 欧美性大战久久| 91精品久久久久久久99蜜桃| 日韩欧美综合在线| 国产亚洲精久久久久久| 国产精品超碰97尤物18| 一区二区激情视频| 日产欧产美韩系列久久99| 久久99国产精品久久99果冻传媒| 国产麻豆91精品| 成人动漫精品一区二区| 欧美一区亚洲二区| 99国产精品久久久久久久成人热 | 欧美色成人综合| 日韩午夜av一区|