日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

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

瀏覽:21日期: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) { //設置分片大?。▎挝籅yte) 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
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
999久久久国产精品| 国产精品成人**免费视频| 国产一区国产二区国产三区| 久久中文字幕一区二区三区| 成人亚洲一区| 99久久夜色精品国产亚洲1000部| 最新日韩欧美| 欧美性感美女一区二区| 亚洲综合丁香| 91亚洲精品在看在线观看高清| 国产精品久久久久av蜜臀| 国产成人免费| 欧美美女一区| 青草综合视频| 久久久一本精品| 亚洲色图国产| 久久精品国内一区二区三区| 91精品国产乱码久久久久久久| 9色精品在线| 国产毛片久久久| 福利一区视频| 美女精品一区| 国产精品1区在线| 免费久久精品| 国产精品视频首页| 亚洲激情中文| 国产精品美女久久久久久不卡 | 亚洲三级毛片| 国产91欧美| 亚洲专区一区| 成人国产精品| 蜜桃视频一区二区三区在线观看| 国产精品多人| 在线亚洲免费| 国产suv精品一区二区四区视频 | 国产欧美一区| av亚洲在线观看| 国产亚洲一区二区三区不卡 | 久久狠狠婷婷| 国产精品jk白丝蜜臀av小说| 国产亚洲毛片| 日本欧美国产| 日韩美女精品| 国产一区二区三区自拍| 国产精品调教| 中文字幕一区二区三区四区久久| 高清一区二区| 国产亚洲精品美女久久| 亚洲精品极品少妇16p| 精品三级av在线导航| 日韩制服丝袜av| 久久精品电影| 精品美女在线视频| 热久久久久久| 中文字幕亚洲精品乱码| 精品一区欧美| 久久久久免费| 欧美精品91| 日本成人手机在线| 一区在线观看| 99久久亚洲精品蜜臀| 美女在线视频一区| 欧美在线首页| 亚洲精品看片| 亚洲免费一区二区| 亚洲高清久久| 国产麻豆久久| 国产一区福利| 国产精品男女| 亚洲欧美一级| 亚洲综合二区| 午夜久久tv| 成人av二区| 色婷婷精品视频| 一区二区精品伦理...| 久久免费福利| 婷婷精品在线| 在线观看视频免费一区二区三区| 在线精品视频在线观看高清| 天堂8中文在线最新版在线| 精品欧美日韩精品| 国产精品日韩精品在线播放| 日韩不卡免费视频| 日韩 欧美一区二区三区| 日韩精品免费视频人成 | 亚洲一区二区av| 快she精品国产999| 国产精品毛片| 日韩中文字幕不卡| 欧美在线综合| 蜜桃视频一区二区三区| 一区二区三区午夜视频| 亚洲精品视频一二三区| 天堂va欧美ⅴa亚洲va一国产| 亚洲免费福利一区| 日韩精品免费一区二区夜夜嗨 | 国产剧情一区二区在线观看| 国产精品一二| 麻豆精品视频在线观看| 色婷婷综合网| 国际精品欧美精品| 高潮久久久久久久久久久久久久| 国产欧洲在线| 免费观看久久av| 久久先锋影音| 日韩成人精品一区二区三区 | 亚洲一区二区成人| 亚洲精一区二区三区| 日韩高清不卡一区二区| 国产精品欧美在线观看| 精品不卡一区| 尤物tv在线精品| 国产亚洲亚洲| 欧美一级一区| 成人在线观看免费视频| 99精品视频精品精品视频| 亚洲欧洲一区| 欧美在线精品一区| 日韩av二区| 欧美va天堂在线| 亚洲天堂日韩在线| 精品一区不卡| 在线综合欧美| 国产精品v一区二区三区| 日韩在线观看不卡| 亚洲欧美网站在线观看| 久久99蜜桃| 婷婷激情一区| 亚洲影视一区二区三区| 欧美激情视频一区二区三区免费| 人人草在线视频| 视频在线观看一区| 欧美激情亚洲| 99国产精品自拍| 美女av一区| 国产精品日韩久久久| 国产精品一区2区3区| 亚洲性图久久| 国产精品一区二区中文字幕| 日本美女一区| 亚洲啊v在线免费视频| 精品国产一区二区三区噜噜噜| 在线观看精品| 日韩av网站在线观看| 九九色在线视频| 欧美一级久久| 天堂资源在线亚洲| 国产精品毛片视频| 日韩午夜av| 国产精品久久久久久久久妇女| 水蜜桃久久夜色精品一区的特点| 欧美精品第一区| 三级在线观看一区二区| 国产精品原创| 91精品丝袜国产高跟在线| 欧美午夜精品一区二区三区电影| 91亚洲无吗| 欧美1级日本1级| 老色鬼精品视频在线观看播放| 喷白浆一区二区| 久久人人97超碰国产公开结果| 国产毛片精品| 综合欧美亚洲| 欧美特黄一区| 欧美日韩精品免费观看视完整| 欧美片网站免费| 视频在线观看国产精品| 久久久久欧美精品| 久久精品国产99国产精品| 亚洲免费福利一区| 欧美日韩免费观看一区=区三区| 精品女同一区二区三区在线观看| 快she精品国产999| 私拍精品福利视频在线一区| 久久国产乱子精品免费女| 久久高清免费观看| 免费精品国产| 久久精品中文| 成人在线免费观看网站| 国产精品久久久久久久久久妞妞| 免费在线观看一区二区三区| 欧美日韩激情在线一区二区三区| 日韩大片免费观看| 国产极品模特精品一二| 欧美久久亚洲| 日韩超碰人人爽人人做人人添| 99在线精品免费视频九九视 | 最新中文字幕在线播放| 国产精品久久| 日韩av三区| 亚洲精品日韩久久| 视频精品一区二区| 日韩网站在线| 欧美~级网站不卡| 91精品一区二区三区综合在线爱| jizzjizz中国精品麻豆| 福利精品一区| 国产精品毛片久久| 国产自产自拍视频在线观看| 日韩av有码|