基於JavaScript實現大檔案上傳後端程式碼例項
阿新 • • 發佈:2020-08-18
這裡只寫後端的程式碼,基本的思想就是,前端將檔案分片,然後每次訪問上傳介面的時候,向後端傳入引數:當前為第幾塊檔案,和分片總數
下面直接貼程式碼吧,一些難懂的我大部分都加上註釋了:
上傳檔案實體類:
看得出來,實體類中已經有很多我們需要的功能了,還有實用的屬性。如MD5秒傳的資訊。
首先是檔案資料接收邏輯,負責接收控制元件上傳的檔案塊資料,然後寫到伺服器的檔案中。控制元件已經提供了塊的索引,大小,MD5和長度資訊,我們可以根據需要來靈活進行處理,也可以將檔案塊的資料儲存到分散式儲存系統中。
檔案初始化部分
第一步:獲取RandomAccessFile,隨機訪問檔案類的物件
第二步:呼叫RandomAccessFile的getChannel()方法,開啟檔案通道 FileChannel,這塊邏輯可以優化,如果以後有分散式儲存需求,可以改為分散式儲存,減輕單臺伺服器的壓力。
第三步:獲取當前是第幾個分塊,計算檔案的最後偏移量
第四步:獲取當前檔案分塊的位元組陣列,用於獲取檔案位元組長度
第五步:使用檔案通道FileChannel類的 map()方法建立直接位元組緩衝器MappedByteBuffer
第六步:將分塊的位元組陣列放入到當前位置的緩衝區內mappedByteBuffer.put(byte[] b);
第七步:釋放緩衝區
第八步:檢查檔案是否全部完成上傳
資料夾掃描類
儲存路徑生成類
好了,到此就全部結束了,如果有疑問或批評,歡迎評論和私信,我們一起成長一起學習。
最後放一張實現的效果圖
後端程式碼邏輯大部分是相同的,目前能夠支援MySQL,Oracle,SQL。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。