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
MongoDB基于GridFS管理文件的更多相关文章
- Spring Boot使用MongoDB GridFS进行文件的操作
1. GridFS简介 GridFS 用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片.音频.视频等),但是它是存储在MonoDB的集合中. GridFS 会将文件对象分割成多个的ch ...
- MongoDB入门(8)- c#通过操作MongoDB GridFS实现文件的数据库存储
GridFS介绍 GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件. GridFS GridFS长啥样 /* 1 */ { "_id" : ObjectId(& ...
- c#通过操作mongodb gridfs实现文件的数据库存储
@(编程) 源码 using MongoDB.Driver; using MongoDB.Driver.GridFS; using System.IO; namespace Wisdombud.Mon ...
- MongoDB图形化管理工具
NoSQL的运动不止,MongoDB 作为其中的主力军发展迅猛,也带起了一股开发图形化工具的风潮:气死反过来说,看一个产品是否得到认可,可以侧面看其第三方工具的数量和成熟程度:简单的收集了MongoD ...
- 用nginx-gridFS读取MongoDB的图片及文件(为什么你老是配不成功?)
最近在部署公司服务器的nginx + mongodb + gridfs环境: 搜索了N多文档,基本上都一样,期间遇到很多问题: 下面是整理的一份搭建文档: 摘要 nginx-gridfs是一个ngin ...
- Oracle 基于用户管理恢复的处理
================================ -- Oracle 基于用户管理恢复的处理 --================================ Oracle支持多种 ...
- Ubuntu下的MongoDB GUI 可视化管理工具
目录 1 Robo 3T 2 NoSQLBooster for MongoDB(收费) 3 JetBrains Plugin Repository :: Mongo Plugin Ubuntu下的Mo ...
- MongoDB 生态 – 可视化管理工具
工欲善其事,必先利其器,我们在使用数据库时,通常需要各种工具的支持来提高效率:很多新用户在刚接触 MongoDB 时,遇到的问题是『不知道有哪些现成的工具可以使用』,本系列文章将主要介绍 MongoD ...
- GridFS大文件的添加、获取、查看、删除
GridFS是一种在MongoDB中存储大二进制文件的机制,使用GridFS的原因有以下几种: 存储巨大的文件,比如视频.高清图片等. 利用GridFS可以简化需求. GridFS会直接利用已经建立的 ...
随机推荐
- 简单认识python的数据类型和语法
一.Python介绍 1用途 1)WEB开发 最火的Python web框架Django, 支持异步高并发的Tornado框架,短小精悍的flask,bottle, Django官方的标语把Djang ...
- web前端攻城狮整理的收藏夹
作为一名web前端开发工程师你的收藏夹存对了吗?下面是一份互联网上流传甚广的web前端开发收藏夹资源,包含学习网站.JS库.常用工具.常用插件.资讯书籍等资源.速速转存吧~ 一.学习网站 W3 ...
- XDU 1164 男神的树(树+lazy数组)
#include<cstdio> #include<cmath> #include<cstring> #include<vector> #define ...
- XDU 1032
#include<cstdio> typedef long long ll; ; ll feima(ll a,ll b) { ll c=; while(b) { ) c=c*a%mod; ...
- ruby中的方法查找
ruby中的方法调用都是 对象.方法 的形式,那么对象如何找到这个方法呢? 首先必须了解祖先链的概念,祖先链就是从一个类开始,到它的父类,再到父类的父类...一直到最终的起点(ruby中是BasicO ...
- koa2+mongoose搭建框架模型
由于学的是java,所以此框架多少有点java的影子,我觉得不必排斥语言,只要思想好,所有语言均可以通用.项目分以下几层 app.js项目启动入口,类似于main函数 controller-view层 ...
- Linux查看本机登陆用户信息(w、who、last和lastlog命令)
w 命令 查看 Linux 服务器上目前已经登录的用户信息 [root@localhost ~]# w :: up :, users, load average:0.00, 0.00, 0.00 US ...
- ABP官方文档翻译 2.1 依赖注入
依赖注入 什么是依赖注入 传统方式的问题 解决方案 构造函数注入模式 属性注入模式 依赖注入框架 ABP依赖注入基础设施 注册依赖注入 传统注册 帮助接口 自定义/直接注册 使用IocManager ...
- AJAX跨域问题解决方法(4)——调用方解决跨域
调用方解决跨域的方法只有一种,那就是隐藏跨域. 何为隐藏跨域? 隐藏跨域的核心思路是通过反向代理隐藏跨域以欺骗浏览器 什么是反向代理?反向代理是指通过中间服务器使得访问同一个域名的两个不同url最终会 ...
- PHP秒杀系统全方位设计分析(二)
商品页面开发 静态化展示页面[效率要比动态PHP高很多,PHP程序需要解析等步骤,本身就需要很多流程,整个下来PHP的处理花的时间和资源要多] 商品状态的控制 开始前.进行中.库存不足.结束 数据逻辑 ...