1. 程式人生 > 程式設計 >基於JavaScript實現大檔案上傳後端程式碼例項

基於JavaScript實現大檔案上傳後端程式碼例項

這裡只寫後端的程式碼,基本的思想就是,前端將檔案分片,然後每次訪問上傳介面的時候,向後端傳入引數:當前為第幾塊檔案,和分片總數

下面直接貼程式碼吧,一些難懂的我大部分都加上註釋了:

上傳檔案實體類:

看得出來,實體類中已經有很多我們需要的功能了,還有實用的屬性。如MD5秒傳的資訊。

基於JavaScript實現大檔案上傳後端程式碼例項

首先是檔案資料接收邏輯,負責接收控制元件上傳的檔案塊資料,然後寫到伺服器的檔案中。控制元件已經提供了塊的索引,大小,MD5和長度資訊,我們可以根據需要來靈活進行處理,也可以將檔案塊的資料儲存到分散式儲存系統中。

基於JavaScript實現大檔案上傳後端程式碼例項

檔案初始化部分

基於JavaScript實現大檔案上傳後端程式碼例項

第一步:獲取RandomAccessFile,隨機訪問檔案類的物件

第二步:呼叫RandomAccessFile的getChannel()方法,開啟檔案通道 FileChannel,這塊邏輯可以優化,如果以後有分散式儲存需求,可以改為分散式儲存,減輕單臺伺服器的壓力。

基於JavaScript實現大檔案上傳後端程式碼例項

第三步:獲取當前是第幾個分塊,計算檔案的最後偏移量

第四步:獲取當前檔案分塊的位元組陣列,用於獲取檔案位元組長度

第五步:使用檔案通道FileChannel類的 map()方法建立直接位元組緩衝器MappedByteBuffer

第六步:將分塊的位元組陣列放入到當前位置的緩衝區內mappedByteBuffer.put(byte[] b);

第七步:釋放緩衝區

第八步:檢查檔案是否全部完成上傳

基於JavaScript實現大檔案上傳後端程式碼例項

資料夾掃描類

基於JavaScript實現大檔案上傳後端程式碼例項

儲存路徑生成類

基於JavaScript實現大檔案上傳後端程式碼例項

好了,到此就全部結束了,如果有疑問或批評,歡迎評論和私信,我們一起成長一起學習。

最後放一張實現的效果圖

基於JavaScript實現大檔案上傳後端程式碼例項

後端程式碼邏輯大部分是相同的,目前能夠支援MySQL,Oracle,SQL。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。