前言

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

MongoDB基于GridFS管理文件的更多相关文章

  1. Spring Boot使用MongoDB GridFS进行文件的操作

    1. GridFS简介 GridFS 用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片.音频.视频等),但是它是存储在MonoDB的集合中. GridFS 会将文件对象分割成多个的ch ...

  2. MongoDB入门(8)- c#通过操作MongoDB GridFS实现文件的数据库存储

    GridFS介绍 GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件. GridFS GridFS长啥样 /* 1 */ { "_id" : ObjectId(& ...

  3. c#通过操作mongodb gridfs实现文件的数据库存储

    @(编程) 源码 using MongoDB.Driver; using MongoDB.Driver.GridFS; using System.IO; namespace Wisdombud.Mon ...

  4. MongoDB图形化管理工具

    NoSQL的运动不止,MongoDB 作为其中的主力军发展迅猛,也带起了一股开发图形化工具的风潮:气死反过来说,看一个产品是否得到认可,可以侧面看其第三方工具的数量和成熟程度:简单的收集了MongoD ...

  5. 用nginx-gridFS读取MongoDB的图片及文件(为什么你老是配不成功?)

    最近在部署公司服务器的nginx + mongodb + gridfs环境: 搜索了N多文档,基本上都一样,期间遇到很多问题: 下面是整理的一份搭建文档: 摘要 nginx-gridfs是一个ngin ...

  6. Oracle 基于用户管理恢复的处理

    ================================ -- Oracle 基于用户管理恢复的处理 --================================ Oracle支持多种 ...

  7. Ubuntu下的MongoDB GUI 可视化管理工具

    目录 1 Robo 3T 2 NoSQLBooster for MongoDB(收费) 3 JetBrains Plugin Repository :: Mongo Plugin Ubuntu下的Mo ...

  8. MongoDB 生态 – 可视化管理工具

    工欲善其事,必先利其器,我们在使用数据库时,通常需要各种工具的支持来提高效率:很多新用户在刚接触 MongoDB 时,遇到的问题是『不知道有哪些现成的工具可以使用』,本系列文章将主要介绍 MongoD ...

  9. GridFS大文件的添加、获取、查看、删除

    GridFS是一种在MongoDB中存储大二进制文件的机制,使用GridFS的原因有以下几种: 存储巨大的文件,比如视频.高清图片等. 利用GridFS可以简化需求. GridFS会直接利用已经建立的 ...

随机推荐

  1. PHPcms v9 get标签sql 语句limit无效问题的解决方法

    get标签非常好用,自定义模型后get几乎变成万能的了.但是PHPCMS升级到V9后,把2008的很多功能都去掉了,比如get标签中,在后面自动添加了一个LIMIT 0,20,这样你即使写了num=' ...

  2. python全栈开发从入门到放弃之装饰器函数

    什么是装饰器#1 开放封闭原则:对扩展是开放的,对修改是封闭的#2 装饰器本身可以是任意可调用对象,被装饰的对象也可以是任意可调用对象#3 目的:''' 在遵循 1. 不修改被装饰对象的源代码 2. ...

  3. 清晰讲解LSB、MSB和大小端模式及网络字节序

    时隔一个月又回到了博客园写文章,很开心O(∩_∩)O~~ 今天在做需求的涉及到一个固件版本的概念,其中固件组的人谈到了版本号从MSB到LSB排列,检索查阅后将所得整理如下. MSB.LSB? MSB( ...

  4. radio,checkbox,select,input text获取值,设置哪个默认选中

    11 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title& ...

  5. webpack打包静态资源和动态资源

    1.对于静态引用的资源: <img src = "static/modelname/imgname.png"> // 修改为下面的写法 <img src = &q ...

  6. WEB项目异常处理

    package cn.rest.advice; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger;impor ...

  7. redis数据持久化内存不足

    原因:写数据到redis里面写不进去,查看redis日志显示: Can't save in background: fork: Cannot allocate memory 在小内存的进程上做一个fo ...

  8. C#数组的Map、Filter、Reduce操作

    在Javascript.Python等语言里,Map.Filter和Reduce是数组的常用方法,可以让你在实现一些数组操作时告别循环,具有很高的实用价值.它们三个的意义大家应该都清楚,有一个十分形象 ...

  9. qml源码查看

    已5.4为例说明: QtQuick源码查看: 地址:Qt\Qt5.4.1\5.4\Src\qtdeclarative\src\quick\items Qt control源码查看: 地址:\Qt\Qt ...

  10. opencv2 学习第8天 提取分离前景和背景

    http://blog.csdn.net/zhouzhouzf/article/details/9281327 GrabCut 代码来自于http://www.cnblogs.com/tornadom ...