java web文件夹_JAVA WEB项目文件夹上传下载解决方案
這里只寫后端的代碼,基本的思想就是,前端將文件分片,然后每次訪問上傳接口的時(shí)候,向后端傳入?yún)?shù):當(dāng)前為第幾塊文件,和分片總數(shù)
下面直接貼代碼吧,一些難懂的我大部分都加上注釋了:
上傳文件實(shí)體類:
看得出來,實(shí)體類中已經(jīng)有很多我們需要的功能了,還有實(shí)用的屬性。如MD5秒傳的信息。
首先是文件數(shù)據(jù)接收邏輯,負(fù)責(zé)接收控件上傳的文件塊數(shù)據(jù),然后寫到服務(wù)器的文件中。控件已經(jīng)提供了塊的索引,大小,MD5和長度信息,我們可以根據(jù)需要來靈活進(jìn)行處理,也可以將文件塊的數(shù)據(jù)保存到分布式存儲(chǔ)系統(tǒng)中。
文件初始化部分
第一步:獲取RandomAccessFile,隨機(jī)訪問文件類的對象
第二步:調(diào)用RandomAccessFile的getChannel()方法,打開文件通道 FileChannel,這塊邏輯可以優(yōu)化,如果以后有分布式存儲(chǔ)需求,可以改為分布式存儲(chǔ),減輕單臺(tái)服務(wù)器的壓力。
第三步:獲取當(dāng)前是第幾個(gè)分塊,計(jì)算文件的最后偏移量
第四步:獲取當(dāng)前文件分塊的字節(jié)數(shù)組,用于獲取文件字節(jié)長度
第五步:使用文件通道FileChannel類的 map()方法創(chuàng)建直接字節(jié)緩沖器??MappedByteBuffer
第六步:將分塊的字節(jié)數(shù)組放入到當(dāng)前位置的緩沖區(qū)內(nèi)??mappedByteBuffer.put(byte[] b);
第七步:釋放緩沖區(qū)
第八步:檢查文件是否全部完成上傳
文件夾掃描類
存儲(chǔ)路徑生成類
好了,到此就全部結(jié)束了,如果有疑問或批評,歡迎評論和私信,我們一起成長一起學(xué)習(xí)。
最后放一張實(shí)現(xiàn)的效果圖
后端代碼邏輯大部分是相同的,目前能夠支持MySQL,Oracle,SQL。在使用前需要配置一下數(shù)據(jù)庫,可以參考我寫的這篇文章:http://blog.ncmem.com/wordpress/2019/08/07/java超大文件上傳與下載/
歡迎入群一起討論“374992201”
總結(jié)
以上是生活随笔為你收集整理的java web文件夹_JAVA WEB项目文件夹上传下载解决方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java同名类_java两个不同名类 在
- 下一篇: java 自定义监听_Spring 中的