目錄
- 文檔目標
驗證通過GridFS提供的API訪問GridFS,並對GridFS提供的功能進行驗證
- MongoDB:GridFS底層依然是MongoDB存儲,因此需要先安裝好MongoDB數據庫,MongoDB數據庫可以從官網下載,目前最新版本是V3.4.2
下載地址:https://www.mongodb.com/download-center
- Java驅動包:目前最新版本也是3.4.2,可從Maven中央倉庫下載:mongo-java-driver-3.4.2.jar
- MongoDB的windows版本,不支持win32平臺;
- 安裝包選擇了包含SSL的版本:
mongodb-win32-x86_64-2008plus-ssl-3.4.2-signed.msi
- 提供msi格式,雙擊直接安裝即可;
- 這裏安裝目錄爲:D:\Program Files\MongoDB。安裝後如下圖所示:
- 創建一個目錄,作爲數據存儲目錄:D:\Program Files\MongoDB\Server\dbData
- 打開命令行,切換到bin目錄下,執行命令,啓動MongoDB;
mongod --dbpath "D:\Program Files\MongoDB\Server\dbData"
- 打開另外命令行,切換到bin目錄下,輸入“mongo“,啓動shell程序
- 輸入命令“use udetest”切換到udetest數據庫(此時並沒有真正創建)
- 添加一條記錄:db.udetest.insert({"name": "udetest"}),數據庫創建成功:
Mongodb默認啓動是不帶認證,也沒有賬號,只要能連接上服務就可以對數據庫進行各種操作,爲了保證數據庫安全,需要添加用戶,並開啓認證
- 執行命令,創建用戶
db.createUser({ user:"udetest",pwd: "udetest", roles: [ "readWrite", "dbAdmin" ] })
上面的命令執行後,在數據庫udetest上,創建一個用戶(用戶名udetest,密碼udetest),這個用戶用於讀寫和管理權限。
- 在MongoDB的命令行窗口,執行Ctrl + C,停止MongoDB;
- 啓動MongoDB,添加auth參數,開啓認證:
mongod --dbpath "D:\Program Files\MongoDB\Server\dbData" --auth
這樣就必須通過用戶名和密碼認證,才能連接到數據庫了
- MongoDB的linux版本,不支持win32平臺;
- 由於驗證時的操作系統SSL版本過低,也無法通過聯網方式更新,故選擇了不包含SSL的版本,安裝包是.tgz格式:
mongodb-linux-x86_64-3.4.2.tgz
- 將壓縮包拷貝到心痛目錄,運行命令解壓:
tar –zxvf ./ mongodb-linux-x86_64-3.4.2.tgz
- 運行chmod命令授權
chmod a+x ./mongodb-linux-x86_64-3.4.2/ -R
- 創建一個目錄,作爲數據存儲目錄:dbData
- 打開命令行,切換到bin目錄下,執行命令,啓動MongoDB;
./mongod --dbpath /home/ude/GridFS/dbData/
- 打開另外命令行,切換到bin目錄下,輸入“mongo“,啓動shell程序
- 輸入命令“use udetest”切換到udetest數據庫(此時並沒有真正創建)
- 添加一條記錄:db.udetest.insert({“name”:“udetest”}),數據庫創建成功:
Mongodb默認啓動是不帶認證,也沒有賬號,只要能連接上服務就可以對數據庫進行各種操作,爲了保證數據庫安全,需要添加用戶,並開啓認證
- 執行命令,創建用戶
db.createUser(
{
user: "udetest",
pwd: "udetest",
roles: [ "readWrite", "dbAdmin" ]
}
)
上面的命令執行後,在數據庫udetest上,創建一個用戶(用戶名udetest,密碼udetest),這個用戶用於讀寫和管理權限。
- 在MongoDB的命令行窗口,執行Ctrl + C,停止MongoDB;
- 啓動MongoDB,添加auth參數,開啓認證:
./mongod --dbpath /home/ude/GridFS/dbData/ --auth
這樣就必須通過用戶名和密碼認證,才能連接到數據庫了
- GridFS接口功能驗證
由於我們已經開啓了MongoDB的認證,因此在連接GridFS時,必須提供認證信息,如下圖所示:
-
- 向GridFS添加數據
關鍵代碼如下圖所示:
- 添加數據時,需要先構造查詢條件查詢;
- 查詢不存在,則創建一個文件,支持的類型包括byte[],InputStream,以及File對象;
- 調用save方法,保存文件;
- 支持獲取保存後文件的MD5,可以與保存前文件MD5做對比
- 從GridFS讀取文件
關鍵代碼如下圖所示:
- 獲取數據時,需要先構造查詢條件查詢;
- 查詢存在,通過writeTo方法,將數據寫入到文件;
- writeTo方法,支持將數據寫入到流中
關鍵代碼如下圖所示:
- 通過文件名稱查詢,然後刪除文件
1、從公開的GridFS接口看,沒有直接提供斷點續傳功能
2、GridFS底層是MongoDB存儲,也採用了多塊存儲的方式,因此可以通過擴展驅動的方式,支持斷點續傳:需要進一步驗證後,才能估計工作量。
由於GridFS底層採用MongoDB存儲,因此GridFS的安全控制是可以通過MongoDB實現的。具體請參考連接GridFS(安全控制)