博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoDB基于GridFS管理文件
阅读量:6234 次
发布时间:2019-06-22

本文共 1840 字,大约阅读时间需要 6 分钟。

前言

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

转载于:https://www.cnblogs.com/luoaz/p/4727595.html

你可能感兴趣的文章
linux文件扩展属性和ACL
查看>>
简洁的dropbox又可以访问了
查看>>
Bash字符串操作
查看>>
使用Jexus服务器运行Asp.Net Core2.0程序
查看>>
Python3写爬虫(三)利用BSF算法实现整个网站的爬取
查看>>
springboot中rabbitmq的配置和使用【进阶一】
查看>>
C++实现动态顺序表
查看>>
流言揭秘:胖子更容易患癌?这可不是危言耸听
查看>>
try catch finally
查看>>
LVM使用案例
查看>>
linux shell中的单引号与双引号的区别(看完就不会有引号的疑问了)
查看>>
分布式开放消息系统(RocketMQ)的原理与实践
查看>>
String字符串拼接效率比较
查看>>
UIView 的旋转和缩放
查看>>
Mysqlbinlog使用
查看>>
win7查看激活状态
查看>>
linux的Nginx访问日志、Nginx日志切割、静态文件不记录日志和过期时间介绍
查看>>
CentOS6下mysql5.5源码安装脚本
查看>>
nodejs 跨域解决问题
查看>>
Spring Bean注册解析(一)
查看>>