MongoDB基於GridFS管理文件


前言

GridFS是一種將大型文件存儲在MongoDB的文件規范:

 

數據庫支持以BSON格式保存二進制對象。 但是MongoDB中BSON對象最大不能超過4MB。

GridFS 規范提供了一種透明的機制,可以將一個大文件分割成為多個較小的文檔。

為實現這點,該規范指定了一個將文件分塊的標准。每個文件都將在文件集合對象中保存一個元數據對象,一個或多個塊對象可被組合保存在一個塊集合中。

 

上傳文件

  • Shell

        mongofiles put xxx.txt

        常用參數如下:

 

        -d 指定數據庫 

        -u –p 指定用戶名,密碼

        -h 指定主機

        -port 指定主機端口

        -r 如果存在同名文件則在put成功后刪除其他同名文件

 

        通過這樣的命令就可以把文件上傳到fs集合中。

  • Java

        //獲取db

        MongoClient mClient = new MongoClient("10.211.55.8");

        db = mClient.getDB("test");

        //得到Gridfs對象

        GridFS fs = new GridFS(db);

        //訪問要上傳的文件

        File file = new File("/Users/luoaz/05testDir/files/test1.txt");

        //執行保持

        GridFSInputFile gfFile = fs.createFile(file);

        gfFile.save();

下載文件

  • Shell

        mongofiles get xxx.txt

        常用參數如下:

 

        -d 指定數據庫 

        -u –p 指定用戶名,密碼

        -h 指定主機

        -port 指定主機端口

        -l 下載到本地的文件名,默認和數據庫中的名字一致

 

        通過這樣的命令就可以把文件從fs集合中下載到本地。

  • Java

        Java 下載的重點是怎么獲取到文件流,獲取到文件流后就跟普通的保持文件到本地一樣了。

          //獲取db

        MongoClient mClient = new MongoClient("10.211.55.8");

        db = mClient.getDB("test");

        //得到Gridfs對象

        GridFS fs = new GridFS(db);

        

        //要下載到的文件路徑

        File file = new File("/Users/files/down_test1.txt");

        FileOutputStream os = new FileOutputStream(file);

                        

        //獲得文件流

        InputStream is = fs.findOne(new BasicDBObject("filename","test1.txt")).getInputStream();

                        

        //下載

        byte[] bytes = new byte[1024];

        while(is.read(bytes)>0){

                os.write(bytes);

        }

        os.flush();

        os.close();

 

刪除文件

  • Shell

        mongofiles delete xxx.txt

        刪除指定名稱的文件,如果存在同名文件則都刪除

        常用參數如下:

 

        -d 指定數據庫 

        -u –p 指定用戶名,密碼

        -h 指定主機

        -port 指定主機端口

  • Java

        //獲取db

        MongoClient mClient = new MongoClient("10.211.55.8");

        db = mClient.getDB("test");

        //得到Gridfs對象

        GridFS fs = new GridFS(db);

                        

        //刪除指定文件名稱的文件

        fs.remove("test1.txt");

查看文件

  • Shell

        1、list 

                顯示所有文件

                mongofiles list xx.txt

                顯示所有的指定文件名的文件

        2、search

                搜索指定名稱的文件,可以模糊搜索

                mongofiles list xx.txt

                mongofiles list .txt

  • Java

        這個就跟MongoDB的find用法一樣了

 

備注

        文件操作主要依賴com.mongodb.gridfs 下的幾個類,參考網址

        http://api.mongodb.org/java/3.0/com/mongodb/gridfs/GridFS.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM