日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

老弟做了个网盘,炸了!

發(fā)布時(shí)間:2025/3/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 老弟做了个网盘,炸了! 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

趣講文件上傳功能的巧妙設(shè)計(jì)

大家好,我是魚(yú)皮。

不知道大家有沒(méi)有想過(guò)制作一款自己的網(wǎng)盤(pán)呢?這不,我學(xué)編程的老弟小阿巴做了一個(gè),非常激動(dòng)地找我來(lái)體驗(yàn)。

打開(kāi)網(wǎng)盤(pán),界面仿的還不錯(cuò),我簡(jiǎn)單試了下文件的上傳和下載,沒(méi)有什么問(wèn)題。

正當(dāng)小阿巴洋洋得意時(shí),我試著上傳一個(gè) 1 GB 大小的文件。結(jié)果文件上傳到 99% 時(shí),網(wǎng)絡(luò)一抖,文件上傳失敗,竟然還要從 0 開(kāi)始重新上傳?!

小阿巴無(wú)奈地?fù)蠐项^:網(wǎng)絡(luò)不好,怪我咯?

我直接一巴掌甩過(guò)去,要知道,制作網(wǎng)盤(pán)可不是一件容易的事!

先從最基礎(chǔ)的功能來(lái)說(shuō),要實(shí)現(xiàn)文件的上傳、存儲(chǔ)、下載、文件和目錄管理。如果要真正上線(xiàn)、開(kāi)放給其他人使用,還要考慮到權(quán)限管理、接口訪(fǎng)問(wèn)、CDN 加速,無(wú)論哪點(diǎn)自己來(lái)做都是很麻煩的。

所以除了學(xué)習(xí)之外,如果想要搭建自己的私人網(wǎng)盤(pán),建議直接選擇一些開(kāi)源的,比如主流的 Seafile、Nextcloud、Cloudreve、OwnCloud 都可以。

當(dāng)然,公用網(wǎng)盤(pán)最要命的還是帶寬、存儲(chǔ)等資源的費(fèi)用,所以為了節(jié)約成本、支持更多用戶(hù)訪(fǎng)問(wèn),很多網(wǎng)盤(pán)都采取了限速、限制容量策略。

小阿巴:做了網(wǎng)盤(pán)這么麻煩啊,我放棄我放棄。。。

我笑到:雖然想做好網(wǎng)盤(pán)很難,但我們可以一步步來(lái),學(xué)習(xí)每個(gè)功能中的優(yōu)秀設(shè)計(jì),相信最后也能做出一款不錯(cuò)的網(wǎng)盤(pán)。今天就先從 文件上傳 講起吧,解決下剛剛上傳失敗必須從 0 重新上傳的問(wèn)題等。

文件上傳設(shè)計(jì)

文件上傳顧名思義就是把文件從本地電腦發(fā)送到存儲(chǔ)文件的遠(yuǎn)程服務(wù)器上,小文件的上傳倒沒(méi)有什么好說(shuō)的,主要考慮的是大文件上傳怎么 更快、更穩(wěn)定、更靈活、更快響應(yīng) 等等,以提高用戶(hù)的體驗(yàn)。

這里分享幾個(gè)經(jīng)典的大文件上傳設(shè)計(jì),包括文件分塊、并發(fā)上傳、斷點(diǎn)續(xù)傳、秒傳、異步上傳。

文件分塊

既然小文件的處理相對(duì)容易,那不妨在發(fā)送前,把大文件分割為多個(gè)連續(xù)的小文件,一塊一塊地發(fā)送。

此外,需要在發(fā)送每一個(gè)文件塊時(shí),額外傳輸一些信息,比如當(dāng)前塊數(shù)、文件總塊數(shù)、文件大小、所屬原文件標(biāo)識(shí)(MD5)等:

這樣,服務(wù)器就能一塊一塊地接收,把這些文件塊保存到臨時(shí)目錄中。當(dāng)接收到最后一塊時(shí),把之前的所有文件塊再拼接到一起,就能組成完成的原文件啦。

并發(fā)上傳

將大文件分塊后,就可以通過(guò)多線(xiàn)程并發(fā)上傳,同時(shí)傳輸多個(gè)塊:

要根據(jù)網(wǎng)絡(luò)情況決定是否并發(fā)上傳、同時(shí)并發(fā)上傳多少個(gè)塊,不是并發(fā)數(shù)越多越好。網(wǎng)絡(luò)好的話(huà),并發(fā)數(shù)量調(diào)大一些,能夠大大提高文件整體上傳效率;相反,盲目調(diào)整并發(fā)數(shù),上傳可能會(huì)更慢。

斷點(diǎn)續(xù)傳

對(duì)于大文件來(lái)說(shuō),上傳中斷后如果要從 0 開(kāi)始重傳,就太讓人崩潰了!

推薦使用斷點(diǎn)續(xù)傳技術(shù),原理很簡(jiǎn)單,在文件分塊的基礎(chǔ)上,服務(wù)器記錄一下原文件對(duì)應(yīng)的上傳進(jìn)度,每接收到一個(gè)塊,就更新一下進(jìn)度。這樣,即使網(wǎng)絡(luò)故障導(dǎo)致上傳失敗,也能從上傳進(jìn)度中知道哪些文件塊已上傳、接下來(lái)需要從哪一塊重新開(kāi)始了,而不用從第 1 塊開(kāi)始重新傳輸。

該原理同樣適用于文件下載。

斷點(diǎn)續(xù)傳有很多種實(shí)現(xiàn)方式,自主實(shí)現(xiàn)、HTTP 協(xié)議 1.1 等,感興趣的同學(xué)可以了解下。

秒傳

不知道大家有沒(méi)有發(fā)現(xiàn),有時(shí),我們上傳一個(gè)幾 GB 的超大文件竟然可以在 1 秒內(nèi)完成!

這是咋實(shí)現(xiàn)的呢?真相只有一個(gè),該文件肯定之前已經(jīng)被上傳過(guò)了!

這就是經(jīng)典的秒傳技術(shù)。

上傳文件前,先在客戶(hù)端(比如瀏覽器)根據(jù)文件內(nèi)容計(jì)算出文件的 MD5 值,相同內(nèi)容的文件 MD5 值必然相同。然后在服務(wù)器已上傳文件數(shù)據(jù)庫(kù)中查找該 MD5 對(duì)應(yīng)的文件是否已存在。如果不存在,上傳文件并在上傳成功后將該文件信息插入數(shù)據(jù)庫(kù),過(guò)程如下:

若文件已存在,直接新建一個(gè)對(duì)該文件的引用就行了,不必重復(fù)上傳,過(guò)程如下:

不過(guò)要注意,不同內(nèi)容文件的 MD5 值也可能會(huì)相同(碰撞),導(dǎo)致用戶(hù)下載到不是自己上傳的文件,所以檢驗(yàn)重復(fù)時(shí),還可以補(bǔ)充一些校驗(yàn),比如針對(duì)文件前幾位再生成一個(gè) MD5、用其他 Hash 算法再生成一個(gè)校驗(yàn)值等。

異步上傳

除了同步上傳外,當(dāng)我們要上傳的文件不在本地而是已經(jīng)存在對(duì)應(yīng) url 時(shí),也可以采用 全異步上傳 的方式,將文件上傳變成一個(gè) 任務(wù)

用戶(hù)輸入要上傳的文件 url,點(diǎn)擊上傳后,不需要一直在文件上傳頁(yè)面等著,而是只需要告訴后臺(tái) “我要執(zhí)行文件上傳”,并向后臺(tái)新建一個(gè)文件上傳任務(wù),就可以快速響應(yīng)用戶(hù)了,比如 “文件上傳中,請(qǐng)留意通知”。等后臺(tái)取出并真正完成文件上傳的任務(wù)后,給用戶(hù)發(fā)送通知就可以了。

整體步驟如下:


最后,如果只是需要在開(kāi)發(fā)中用到文件上傳,大可不必自己實(shí)現(xiàn)上述功能,用個(gè)現(xiàn)成的對(duì)象存儲(chǔ)服務(wù)就好了。比如七牛云,分塊上傳什么的都給我們做好了,也可以參考七牛云 SDK 文檔(https://github.com/qiniu)來(lái)了解它們的實(shí)現(xiàn)方式。

我是魚(yú)皮,最后再送大家一些 幫助我拿到大廠 offer 的學(xué)習(xí)資料

跑了,留下 6T 的資源!

歡迎閱讀 我從 0 自學(xué)進(jìn)入騰訊的編程學(xué)習(xí)、實(shí)習(xí)、求職、考證、寫(xiě)書(shū)經(jīng)歷,不再迷茫!

我學(xué)計(jì)算機(jī)的四年,共勉!

以上就是本期分享,有幫助的話(huà)點(diǎn)個(gè)贊吧 ??

總結(jié)

以上是生活随笔為你收集整理的老弟做了个网盘,炸了!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美乱妇日本无乱码特黄大片 | 国产按摩一区二区三区 | 色射网 | 狠狠成人| 黄色一级网站 | 黑人玩弄人妻一区二 | 国产精品系列在线播放 | 超碰97国产 | 精品国产一区二区三区四区 | 黄色三级视频网站 | 中文字幕十一区 | 春宵av | 久久牛牛 | 亚洲精品视频国产 | 求个黄色网址 | 亚洲色图二区 | 国产精品一区二区三区四区五区 | 贵族女沦为官妓h呻吟 | 91久久国语露脸精品国产高跟 | 免费一级一片 | 精品国产午夜福利 | 色婷婷综合久久 | 男人的天堂97 | 免费在线观看一区二区三区 | 亚洲精品无 | 亚洲综合中文 | 婷婷五月花| 91精品国产高清91久久久久久 | 精品一区二区三区成人免费视频 | 69堂免费视频 | 日本香蕉网 | 欧美xxxx黑人又粗又长密月 | 四虎影视免费在线观看 | cao国产| 精品国产成人亚洲午夜福利 | 成人午夜福利一区二区 | a毛片网站 | 国产一区二区三区黄 | 麻豆911| 亚洲精品乱码久久久久久蜜桃91 | 青青草精品| 日本一区二区三区在线观看 | 欧美67194 | 你懂的在线免费观看 | 国产色在线观看 | 欧洲色视频 | 国产三级日本三级在线播放 | 亚洲妇女av | 国产色图视频 | 手机成人av | 精品国产一二区 | 免费a网 | 日韩欧美精品久久 | 欧美日韩中文国产 | 操碰在线观看 | 中文字幕91视频 | 国产精品99久久久久 | 不卡av一区 | 激情五月婷婷小说 | 国产精品jizz在线观看无码 | 久久国产影视 | 日韩人妻无码精品综合区 | 欧美一区二区三区成人精品 | 国产香蕉在线观看 | 国产黄色免费视频 | 日本三级久久 | 国产精品一区久久 | 美女免费视频网站 | 亚洲国产亚洲 | 欧美成人精品一区二区免费看片 | 亚洲精品一区二区三区四区五区 | aa片在线观看视频在线播放 | 中文字幕在线免费看 | 18深夜在线观看免费视频 | 夜夜操网| 桃色成人网 | 亚洲永久视频 | 黄色性视频 | 国产熟妇乱xxxxx大屁股网 | 69**夜色精品国产69乱 | 好看的中文字幕电影 | 久久永久免费视频 | 91色在线播放 | 国产又色又爽又黄又免费 | 国产激情一区二区三区在线观看 | 中文字字幕一区二区三区四区五区 | 久久久无码人妻精品无码 | 日本亚洲视频 | 黄色国产一区二区 | 在线二区 | 美女又爽又黄视频毛茸茸 | 在线观看成年人视频 | 国产一区二三区 | 欧美丝袜视频 | 久久久久99精品成人片 | 美乳在线播放 | 男人的天堂在线视频 | 日韩欧美中文字幕在线视频 | 精品国产一区二区三区日日嗨 |