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

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

Java上傳文件到服務器指定文件夾實現(xiàn)過程圖解

瀏覽:87日期:2022-08-26 18:30:07

核心原理:

該項目核心就是文件分塊上傳。前后端要高度配合,需要雙方約定好一些數(shù)據(jù),才能完成大文件分塊,我們在項目中要重點解決的以下問題。

*如何分片;

*如何合成一個文件;

*中斷了從哪個分片開始。

如何分,利用強大的js庫,來減輕我們的工作,市場上已經能有關于大文件分塊的輪子,雖然程序員的天性曾迫使我重新造輪子。但是因為時間的關系還有工作的關系,我只能罷休了。最后我選擇了百度的WebUploader來實現(xiàn)前端所需。

如何合,在合之前,我們還得先解決一個問題,我們如何區(qū)分分塊所屬那個文件的。剛開始的時候,我是采用了前端生成了唯一uuid來做文件的標志,在每個分片請求上帶上。不過后來在做秒傳的時候我放棄了,采用了Md5來維護分塊和文件關系。

在服務端合并文件,和記錄分塊的問題,在這方面其實行業(yè)已經給了很好的解決方案了。參考迅雷,你會發(fā)現(xiàn),每次下載中的時候,都會有兩個文件,一個文件主體,另外一個就是文件臨時文件,臨時文件存儲著每個分塊對應字節(jié)位的狀態(tài)。

這些都是需要前后端密切聯(lián)系才能做好,前端需要根據(jù)固定大小對文件進行分片,并且請求中要帶上分片序號和大小。前端發(fā)送請求順利到達后臺后,服務器只需要按照請求數(shù)據(jù)中給的分片序號和每片分塊大小(分片大小是固定且一樣的)算出開始位置,與讀取到的文件片段數(shù)據(jù),寫入文件即可。

為了便于開發(fā),我 將服務端的業(yè)務邏輯進行了如下劃分,分成初始化,塊處理,文件上傳完畢等。

服務端的業(yè)務邏輯模塊如下

Java上傳文件到服務器指定文件夾實現(xiàn)過程圖解

功能分析:

文件夾生成模塊

Java上傳文件到服務器指定文件夾實現(xiàn)過程圖解

文件夾上傳完畢后由服務端進行掃描代碼如下

Java上傳文件到服務器指定文件夾實現(xiàn)過程圖解

分塊上傳,分塊處理邏輯應該是最簡單的邏輯了,up6已經將文件進行了分塊,并且對每個分塊數(shù)據(jù)進行了標識,這些標識包括文件塊的索引,大小,偏移,文件MD5,文件塊MD5(需要開啟)等信息,服務端在接收這些信息后便可以非常方便的進行處理了。比如將塊數(shù)據(jù)保存到分布式存儲系統(tǒng)中

Java上傳文件到服務器指定文件夾實現(xiàn)過程圖解

分塊上傳可以說是我們整個項目的基礎,像斷點續(xù)傳、暫停這些都是需要用到分塊。

分塊這塊相對來說比較簡單。前端是采用了webuploader,分塊等基礎功能已經封裝起來,使用方便。

借助webUpload提供給我們的文件API,前端就顯得異常簡單。

前臺HTML模板

Java上傳文件到服務器指定文件夾實現(xiàn)過程圖解

分則必合。把大文件分片了,但是分片了就沒有原本文件功能,所以我們要把分片合成為原本的文件。我們只需要把分片按原本位置寫入到文件中去。因為前面原理那一部我們已經講到了,我們知道分塊大小和分塊序號,我就可以知道該分塊在文件中的起始位置。所以這里使用RandomAccessFile是明智的,RandomAccessFile能在文件里面前后移動。但是在andomAccessFile的絕大多數(shù)功能,已經被JDK1.4的NIO的“內存映射文件(memory-mapped files)”取代了。我在該項目中分別寫了使用RandomAccessFile與MappedByteBuffer來合成文件。分別對應的方法是uploadFileRandomAccessFile和uploadFileByMappedByteBuffer。兩個方法代碼如下。

秒傳功能

Java上傳文件到服務器指定文件夾實現(xiàn)過程圖解

Java上傳文件到服務器指定文件夾實現(xiàn)過程圖解

服務端邏輯

Java上傳文件到服務器指定文件夾實現(xiàn)過程圖解

秒傳功能,相信大家都體現(xiàn)過了,網盤上傳的時候,發(fā)現(xiàn)上傳的文件秒傳了。其實原理稍微有研究過的同學應該知道,其實就是檢驗文件MD5,記錄下上傳到系統(tǒng)的文件的MD5,在一個文件上傳前先獲取文件內容MD5值或者部分取值MD5,然后在匹配系統(tǒng)上的數(shù)據(jù)。

Breakpoint-http實現(xiàn)秒傳原理,客戶端選擇文件之后,點擊上傳的時候觸發(fā)獲取文件MD5值,獲取MD5后調用系統(tǒng)一個接口(/index/checkFileMd5),查詢該MD5是否已經存在(我在該項目中用redis來存儲數(shù)據(jù),用文件MD5值來作key,value是文件存儲的地址。)接口返回檢查狀態(tài),然后再進行下一步的操作。相信大家看代碼就能明白了。

嗯,前端的MD5取值也是用了webuploader自帶的功能,這還是個不錯的工具。

Java上傳文件到服務器指定文件夾實現(xiàn)過程圖解

控件計算完文件MD5后會觸發(fā)md5_complete事件,并傳值md5,開發(fā)者只需要處理這個事件即可,

Java上傳文件到服務器指定文件夾實現(xiàn)過程圖解

斷點續(xù)傳

up6已經自動對斷點續(xù)傳進行了處理,不需要開發(fā)都再進行單獨的處理。

在f_post.jsp中接收這些參數(shù),并進行處理,開發(fā)者只需要關注業(yè)務邏輯,不需要關注其它的方面。

Java上傳文件到服務器指定文件夾實現(xiàn)過程圖解

斷點續(xù)傳,就是在文件上傳的過程中發(fā)生了中斷,人為因素(暫停)或者不可抗力(斷網或者網絡差)導致了文件上傳到一半失敗了。然后在環(huán)境恢復的時候,重新上傳該文件,而不至于是從新開始上傳的。

前面也已經講過,斷點續(xù)傳的功能是基于分塊上傳來實現(xiàn)的,把一個大文件分成很多個小塊,服務端能夠把每個上傳成功的分塊都落地下來,客戶端在上傳文件開始時調用接口快速驗證,條件選擇跳過某個分塊。

實現(xiàn)原理,就是在每個文件上傳前,就獲取到文件MD5取值,在上傳文件前調用接口(/index/checkFileMd5,沒錯也是秒傳的檢驗接口)如果獲取的文件狀態(tài)是未完成,則返回所有的還沒上傳的分塊的編號,然后前端進行條件篩算出哪些沒上傳的分塊,然后進行上傳。

當接收到文件塊后就可以直接寫入到服務器的文件中

Java上傳文件到服務器指定文件夾實現(xiàn)過程圖解

這是文件塊上傳的效果

Java上傳文件到服務器指定文件夾實現(xiàn)過程圖解

這是文件夾上傳完后的效果

Java上傳文件到服務器指定文件夾實現(xiàn)過程圖解

這是文件夾上傳完后在服務端的存儲結構

Java上傳文件到服務器指定文件夾實現(xiàn)過程圖解

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲欧美日韩综合国产aⅴ| 久久xxxx精品视频| 亚洲永久精品唐人导航网址| 久久精品日韩欧美| 深夜福利一区| 日韩av二区在线播放| 日韩精品社区| 亚州国产精品| 偷拍亚洲精品| 国产日韩欧美高清免费| 亚洲免费一区三区| 日韩精品免费一区二区夜夜嗨| 丝瓜av网站精品一区二区| 三级一区在线视频先锋| 国产精品毛片| 日韩精品免费视频人成| 国产精品一区二区av日韩在线| 麻豆成人av在线| 国产精品白丝av嫩草影院| 精品国产成人| 免费国产自久久久久三四区久久 | 久久性天堂网| 亚洲资源网站| 国产精品久久久久毛片大屁完整版| 国产精品国码视频| 丝袜美腿一区| 亚洲人亚洲人色久| 国产一区二区三区黄网站| 伊人久久av| 亚洲无线一线二线三线区别av| 性色av一区二区怡红| 久久99久久人婷婷精品综合| 国产精品av久久久久久麻豆网| 久久国产精品色av免费看| 日韩在线免费| 日韩va欧美va亚洲va久久| 成人av动漫在线观看| 欧美国产先锋| 亚洲最新av| 欧美精品高清| 精品国产乱码久久久久久1区2匹| 噜噜噜躁狠狠躁狠狠精品视频| 麻豆精品视频在线观看| 91精品精品| 美腿丝袜亚洲一区| 亚洲欧美久久精品| 久久免费大视频| 高清久久一区| 久久这里只有精品一区二区| 日韩午夜高潮| av在线日韩| 成人美女视频| 成人美女视频| 在线看片福利| 高清av一区| 成人精品久久| 精品国产一区二区三区性色av| 婷婷五月色综合香五月| 亚洲一级在线| 国产午夜久久| 欧美激情一区| 老牛国内精品亚洲成av人片| 日韩午夜电影| 国产偷自视频区视频一区二区| 88xx成人免费观看视频库| 鲁鲁在线中文| 99精品电影| 欧洲激情综合| 亚洲一区二区三区在线免费| 日韩一区精品视频| 欧美性www| 成人片免费看| 水蜜桃久久夜色精品一区| 国产精品高清一区二区| 丝袜美腿亚洲一区| 日韩久久一区| 国产精品不卡| 91高清一区| 日韩欧美激情| 久久亚洲国产精品尤物| 欧美二三四区| 亚洲少妇在线| 欧美激情在线精品一区二区三区| 精品视频一区二区三区在线观看| 免费看av不卡| 涩涩涩久久久成人精品| 成人日韩av| 日韩中文字幕91| 美女在线视频一区| 亚洲播播91| 亚洲欧美在线专区| 国产成人a视频高清在线观看| 午夜av一区| 国产欧美88| 狠狠爱成人网| 国内精品伊人| 91精品国产一区二区在线观看| 蜜臀国产一区| 国产九一精品| 一区免费在线| 国产一区二区三区成人欧美日韩在线观看| 午夜国产精品视频| 国产麻豆一区| 亚洲一级在线| 国产精品国产三级国产在线观看| 999在线观看精品免费不卡网站| 国产精品久久久久久久免费软件 | 一区二区国产在线观看| 国产精品蜜芽在线观看| 日韩欧美激情电影| 黄色国产精品| 激情视频一区二区三区| 国产aⅴ精品一区二区三区久久| 无码日韩精品一区二区免费| 欧美日韩国产综合网| 日韩成人高清| 久久a爱视频| 国产伦精品一区二区三区千人斩 | 日韩精品一二三| 欧美精品一区二区三区精品| 福利在线一区| 嫩呦国产一区二区三区av| 天堂va欧美ⅴa亚洲va一国产| 国产精品普通话对白| 亚洲性色视频| 欧美日韩中文字幕一区二区三区| 免费一级欧美片在线观看网站| 中文字幕一区二区三区四区久久| 欧美成人日韩| 亚洲欧美日韩综合国产aⅴ| 久久精品官网| 国产99亚洲| 日韩专区精品| 免费黄色成人| 黄色免费成人| 亚洲天堂日韩在线| 日韩av在线播放中文字幕| 久久国产尿小便嘘嘘| 欧美一区久久| 国产乱论精品| 日韩av自拍| 久久久人人人| 免费av一区| 午夜在线一区| 91欧美精品| a天堂资源在线| 在线亚洲国产精品网站| 综合激情五月婷婷| 国产乱码精品一区二区亚洲| 麻豆一区在线| 亚洲午夜黄色| 亚洲综合欧美| 国产精品一区二区99| 国产精品蜜芽在线观看| 免费欧美一区| 国产丝袜一区| 日韩欧美一区二区三区免费看| 99久久久久国产精品| 视频一区二区不卡| 老司机精品视频网| 狠狠干成人综合网| 国产人成精品一区二区三| 日韩精品一区二区三区免费观看| 亚洲专区欧美专区| 另类综合日韩欧美亚洲| 伊人精品视频| 国产精品午夜av| 欧美精品黄色| 在线天堂中文资源最新版| 在线精品观看| 亚洲深夜视频| 日本强好片久久久久久aaa| 久久男人天堂| 国产日韩欧美中文在线| 久久国产成人| 在线国产一区| 国产91在线播放精品| 日韩影片在线观看| 亚洲精品中文字幕乱码| 国产传媒av在线| 欧美视频久久| 免费在线观看精品| 欧美日韩在线播放视频| 福利一区视频| 国产精品任我爽爆在线播放| 国产综合激情| 特黄毛片在线观看| 欧美在线不卡| 麻豆91精品| 在线观看免费一区二区| 日韩欧美精品综合| 精品久久久网| 福利一区二区三区视频在线观看| 国产精品久久久久久模特| 欧美日韩99| 国产欧美三级| 麻豆中文一区二区| 久久精品国产成人一区二区三区| 国产精品亚洲四区在线观看 | 欧美国产三级|