關於檔案上傳的見解

2021-10-05 03:57:52 字數 1000 閱讀 9471

當下的業務中往往有檔案上傳等需求,那麼筆者今天就來談談檔案上傳伺服器的相關操作。

你或許對這個標題感覺到奇怪,不是隨便找個合適目錄下儲存檔案就完事了麼,難道儲存路徑也有門道?

是的,網上有很多關於檔案上傳儲存的教程。其中,大部分推薦的檔案儲存路徑都類似2020/1/31/qwertyuiopasdf.jpg。那麼,你想過為什麼要以這樣的路徑儲存麼?

我認為原因有二:

對於剛入門的讀者而言,保證檔案在伺服器上儲存僅有乙個副本,聽起來匪夷所思,但這常常是作為乙個後端攻城獅所必須要做的。

其實這個實現起來並不困難。首先,我們都知道檔案上傳是通過二進位制傳輸,當檔案上傳後,我們可以得到檔案的二進位制資料集。其次,相信大部分讀者都使用過md5加密,簡而言之就是,對於不同的資料集可以得到不同且唯一的加密字串。

如此,通過對檔案的二進位制資料集進行md5加密得到的加密字串即可以唯一的標識乙個檔案。將該加密字串存入資料庫中,如果上傳的檔案加密後的字串在資料庫中已存在,那麼說明該檔案存在資料庫,否則,不存在。或許,對於這個邏輯你還聽過它的另乙個名字,一鍵上傳

要保證目錄下的檔案命名不重複,其實,上面已經給出了乙個很好的解決方案,就是使用檔案的md5加密值作為檔案的命名。

當然,也有一些其他的命名方式,比如:「檔名 + 當前unix時間戳」等,同樣也是乙個不錯的選擇

對於這個的處理,有一部分人選擇儲存檔案的全路徑,即:http://***/yyy/zzz.jpg,但更多的人則選擇儲存部分路徑,即:2020/1/31/abcdefghijk.jpg

而筆者認為,為了專案的可擴充套件性考慮,第二種方式才是上上之選。因為如果想為專案提高訪問速度,那麼像檔案這樣的靜態資源訪問一定是瓶頸之一。所以,為了提高靜態資源的訪問速度,必然會考慮cdn提速。當你把伺服器上的靜態資源轉移之後,如果資料庫的儲存的是http://***/yyy/zzz.jpg這樣的路徑,那麼你將有的忙了,~偷笑

關於檔案的上傳

asp.裡的 form id form1 method post runat server enctype multipart form data input type file runat server id uploadimage name uploadimage asp button id b...

上傳大檔案 關於大檔案上傳

js計算檔案md5使用spark md5.js,據說這個庫使用的是世界上最快的md5演算法。js對檔案切片並使用ajax上傳切片 let size file.size 獲取檔案大小 const shardsize 1024 1024 塊大小1mb let shardcount math.ceil s...

關於ERP的見解

眾所周知,erp即企業資源計畫,它是由mrp 製造資源計畫 發展而來的,90年代初,美國gartner group公司用一系列功能標準來界定erp,其定義如下 超越了mrp 的範圍和整合功能 支援混合方式的製造環境 支援動態的監控能力,提高業務績效 支援開放的客戶機 伺服器計算環境。隨著第三產業的飛...