最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于JavaScript實(shí)現(xiàn)大文件上傳后端代碼實(shí)例

 更新時(shí)間:2020年08月18日 08:36:29   作者:松鼠的博客  
這篇文章主要介紹了基于JavaScript實(shí)現(xiàn)大文件上傳后端代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這里只寫后端的代碼,基本的思想就是,前端將文件分片,然后每次訪問上傳接口的時(shí)候,向后端傳入?yún)?shù):當(dāng)前為第幾塊文件,和分片總數(shù)

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

上傳文件實(shí)體類:

看得出來,實(shí)體類中已經(jīng)有很多我們需要的功能了,還有實(shí)用的屬性。如MD5秒傳的信息。

首先是文件數(shù)據(jù)接收邏輯,負(fù)責(zé)接收控件上傳的文件塊數(shù)據(jù),然后寫到服務(wù)器的文件中。控件已經(jīng)提供了塊的索引,大小,MD5和長(zhǎng)度信息,我們可以根據(jù)需要來靈活進(jìn)行處理,也可以將文件塊的數(shù)據(jù)保存到分布式存儲(chǔ)系統(tǒng)中。

文件初始化部分

第一步:獲取RandomAccessFile,隨機(jī)訪問文件類的對(duì)象

第二步:調(diào)用RandomAccessFile的getChannel()方法,打開文件通道 FileChannel,這塊邏輯可以優(yōu)化,如果以后有分布式存儲(chǔ)需求,可以改為分布式存儲(chǔ),減輕單臺(tái)服務(wù)器的壓力。

第三步:獲取當(dāng)前是第幾個(gè)分塊,計(jì)算文件的最后偏移量

第四步:獲取當(dāng)前文件分塊的字節(jié)數(shù)組,用于獲取文件字節(jié)長(zhǎng)度

第五步:使用文件通道FileChannel類的 map()方法創(chuàng)建直接字節(jié)緩沖器MappedByteBuffer

第六步:將分塊的字節(jié)數(shù)組放入到當(dāng)前位置的緩沖區(qū)內(nèi)mappedByteBuffer.put(byte[] b);

第七步:釋放緩沖區(qū)

第八步:檢查文件是否全部完成上傳

文件夾掃描類

存儲(chǔ)路徑生成類

好了,到此就全部結(jié)束了,如果有疑問或批評(píng),歡迎評(píng)論和私信,我們一起成長(zhǎng)一起學(xué)習(xí)。

最后放一張實(shí)現(xiàn)的效果圖

后端代碼邏輯大部分是相同的,目前能夠支持MySQL,Oracle,SQL。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

西藏| 崇左市| 玉树县| 东辽县| 怀化市| 焉耆| 潞西市| 青州市| 房山区| 锡林郭勒盟| 潼关县| 普兰店市| 潍坊市| 上栗县| 卢湾区| 启东市| 南和县| 高邑县| 乌鲁木齐县| 广德县| 平舆县| 通化市| 沧州市| 兴文县| 宁陵县| 宣化县| 芦山县| 荣成市| 新晃| 高州市| 公安县| 荃湾区| 南雄市| 镇沅| 县级市| 忻城县| 大港区| 罗山县| 通海县| 嘉定区| 濉溪县|