1. 程式人生 > >結合個人專案淺談雲盤儲存

結合個人專案淺談雲盤儲存

前一段時間剛完成一個個人的web專案,是用JSP技術開發的檔案系統,其中實現了的功能有:註冊、登入、上傳檔案、下載檔案、檢視檔案,功能比較簡單。這個專案的靈感來自最近用得比較多的雲盤,雲盤的主要功能除了以上幾個外,還有回收站、分享自己的檔案、將別的使用者分享的檔案轉存到自己的雲盤中,除此之外,有些雲盤還具有關注他人、甚至是手機找回的附加功能。

現在先說說我做了這個專案之後的一些心得,既然這是一個有關於檔案的系統,那麼首先需要注意的點就是檔案的路徑。在寫這個專案的時候我簡化了檔案的路徑,沒有用相對路徑,直接寫死了路徑,我將路徑都設在D盤的一個資料夾a(舉個例子,資料夾命名可以根據專案來命名)中。只要使用者註冊了賬號,就給他在D盤的目錄中新建一個資料夾,以使用者名稱來命名資料夾名,之後使用者對檔案的操作都會存到那個資料夾中。例如我註冊了一個賬號,使用者名稱叫admin,那麼系統會在註冊成功後在D:\a目錄下建立一個admin資料夾,之後該使用者上傳的檔案都會存入這個admin資料夾中。開發這個系統的時候,我是在自己的計算機上進行編寫和配置的,伺服器和客戶端是同一臺計算機,一開始我以為註冊後是在客戶端的計算機上建立資料夾,這樣似乎就失去了雲端儲存檔案的意義,之後當我將專案傳到另一臺伺服器上執行後,發現註冊之後客戶端是不會新建使用者資料夾的,使用者對檔案的操作都是在伺服器端的資料夾中有所體現,這樣可以簡單實現雲端儲存。

關於這個檔案系統,還有一點是檔案的讀取與寫入,現在這個專案還停留在上傳檔案不能上傳包和資料夾,而所傳的檔案也有一些限制,比如說如果上傳word的話,線上檢視只能看到亂碼,上傳圖片,若要線上檢視,則需要在HTML標記中使用<image><img>這些能顯示圖片的標籤。而這方面這個專案還沒有對使用者上傳的檔案進行判斷、分別處理。

其中這個專案中自我感覺比較好的一部分是選擇檔案這一塊,使用者點選“下載檔案”、“檢視檔案”或者“刪除檔案”後會連結到一個“選擇檔案”的介面,這個介面用form表單單選的形式讓使用者選擇一個檔案,使用者提交後會轉到一個判斷使用者操作的servlet中,判斷使用者到底是要下載還是檢視或是刪除,然後再跳轉到相應的servlet中進行操作,最終操作完成的資訊會顯示在一個result.jsp的頁面中。整個專案使用了mvc模式,servlet做驗證,bean儲存資訊還有連線資料庫,JSP頁面用來顯示,整個層次很清晰,後期修改維護起來也很方便。

現在我來說說對現有的一些雲盤網盤的個人想法,最近這一兩年網盤興起,用得也很頻繁,本人是目睹了騰訊微雲的一步一步變化,也申請了好幾個不同網盤的賬號,甚至使用網盤都取代了U盤,基於此我有許多個人想法。首先,現在很多雲盤都有手機客戶端,可以實現備份手機相簿、通訊錄之類的功能,還有一個可能大部分人不會去注意的功能,就是手機客戶端可以每天簽到送網盤空間,不過這個功能現在百度雲還不支援。現在是資訊時代,網盤空間都是以T來計,聯絡到我做的這個專案,可見網盤伺服器的容量十分驚人。之前我有在360雲盤上轉存過別人分享的檔案,於是就聯想到這些分享的檔案可能被存放在一個特定的資料夾中,然後不同的使用者都可以對其進行訪問,這樣就可以不用為重複的檔案浪費空間了,但是當你刪除自己網盤中的這個檔案時,不會對那個資料夾中的檔案進行刪除,只是刪除了與那個資料夾相關的一個連結。這麼想來如果你雲盤上的東西都是從別人那裡轉存過來的,雖然顯示你的雲盤空間減少了,其實這部分空間只是那些檔案大小的一個對映,並沒有真正佔用你的雲盤空間。往更深的方面想,這些你所擁有的虛擬的雲盤空間都是與他人共享的一個空間,它所顯示的空間是指將要分配給你的檔案的一個大小的對映,說的有點繞,說白點就是那些空間是虛的,並不是真正給你那麼多T,讓你一個人來儲存檔案。真正讓我感覺到那些空間是被我所使用,大概就是在我將自己的檔案上傳到網盤中的時候。說到這裡我又想到,那些還沒有被裝滿的空間,其實也是沒有真正屬於你的,這就像你存在餘額寶中的錢,名義上是屬於你的,但其實那些錢已經在各種地方流通了不知道多少遍。

當你將自己的檔案存到網盤中的時候考慮的除了空間之外,還有一點就是安全了。聯絡到自己做的這個檔案系統,擁有最高許可權的人,也可以說是管理員,他可以直接開啟伺服器端的資料夾檢視使用者上傳的檔案。那麼那些雲盤應該也是類似的,不過一些網盤聲稱自己的伺服器儲存檔案時是加密儲存,管理員也不能對那些檔案隨意檢視操作。說到安全問題,我想到檔案在上傳下載的時候是否保持了檔案的原始性。再次聯絡到自己做的檔案系統,上傳檔案時,是先讀取使用者上傳的檔案,再將讀取到的內容一行一行地寫入到伺服器中新建的一個檔案內。使用者下載檔案時用的也是輸入輸出流。在上傳下載文字檔案時用這個方法所得的檔案尚且會有點出入,那麼那些雲盤是使用什麼方法,保證傳輸的不同型別的檔案都保有原始性的呢?他們又是使用什麼方法來實現高質量地上傳和下載的呢?

有關這一方面我還需要更多更深入地去學習去思考去探索。