前言

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. 模块讲解----shutil模块(copy、压缩、解压)

    作用与功能 主要用于文件的copy,压缩,解压 导入shuitl模块: import shutil copy方法 1.shutil.copyfileobj()  打开file1,并copy写入file ...

  2. HDevelop数据类型

    *图形类型*图像Hwnd:=3600read_image(Image, 'fabrik')disp_obj(Image, Hwnd)*region 区域gen_rectangle1(Rectangle ...

  3. Extjs添加行双击事件

    var grid = new Ext.grid.GridPanel({ store: store, trackMouseOver: false, disableSelection: true, aut ...

  4. 错误:程序“XXX”不包含适合于入口点的静态“Main”方法

    解决办法: 1.右键类库属性 2.将输出类型改为“类库”

  5. java中全面的单例模式多种实现方式总结

    单例模式的思想 想整理一些 java 并发相关的知识,不知道从哪开始,想起了单例模式中要考虑的线程安全,就从单例模式开始吧. 以前写过单例模式,这里再重新汇总补充整理一下,单例模式的多种实现. 单例模 ...

  6. 404 Not Found 探秘Nginx转发处理流程

    一.问题描述 访问一个链接地址后报404 Not Found nginx/1.10.2 1 112.95.211.154 - - [08/Mar/2018:15:22:21 +0800] " ...

  7. Python3 计算城市距离

    利用上一篇得到的城市经纬度算城市距离 import requests from math import radians, cos, sin, asin, sqrt def geocode(addres ...

  8. DataTable转换成IList

    //文章出处: http://www.cnblogs.com/hlxs/archive/2011/05/09/2087976.html DataTable转换成IList 在用C#作开发的时候经常要把 ...

  9. 解决Ubuntu sudo apt-get install遇到的E: Sub-process /usr/bin/dpkg returned an error code (1)问题

    如题,本人在安装samba等软件的时候,在命令行敲入: sudo apt-get install samba4命令的时候,系统在下载之后报错,大致内容如下: ~$ sudo apt-get insta ...

  10. eclipse 创建jsp报错