前言

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 java_MongoDB基于GridFS管理文件相关推荐

  1. mongodb gridfs java_mongodb Gridfs操作

    GridFS 介绍 GridFS是MongoDB规范用于存储和检索大文件,如图片,音频文件,视频文件等.这是一种文件系统用来存储文件,但数据存储于MongoDB集合中.GridFS存储文件比其文档大小 ...

  2. (chap9 基于HTTP的功能追加协议) Web 服务器管理文件的 WebDAV

    WebDAV(Web-based Distributed Authoring and Versioning)基于万维网的分布式创作和版本控制 1. 定义 一个可对 Web 服务器上的内容直接进行文件复 ...

  3. 基于js管理大文件上传以及断点续传

    大厂技术  高级前端  Node进阶 点击上方 程序员成长指北,关注公众号 回复1,加入高级Node交流群 前言 前端小伙伴们平常在开发过程中文件上传是经常遇到的一个问题,也许你能够实现相关的功能,但 ...

  4. 魔坊APP项目-16-种植园、websocket协议、服务端基于socket提供服务(基于房间管理分发信息)、种植园页面展示

    种植园 我们需要完成的种植园,是一个互动频繁,并且要求有一定即时性的模块,所以如果继续基于http协议开发,那么需要通过ajax发送大量http请求,同时因为http本身属于单向通讯,所以服务端无法主 ...

  5. SpringBoot/Java 将MongoDB中的数据转换为json文件

    项目背景: 我最近在做SpringBoot的项目,其中数据库使用的是MongoDB,前端框架用的是layui.在我使用layui的数据表格组件时,其数据接口对应的是json文件,所有我得将MongoD ...

  6. MongoDB安装和MongoChef可视化管理工具的使用

    MongoDB Windows 用户向导:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-windows/ 注意:最后一步时,左 ...

  7. oracle ebs 基于host(主机文件)并发程序的开发,Oracle EBS 基于Host(主机文件)并发程序的开发...

    您可以将程序命名为 .prog,其中 是在"可执行并发程序"窗口的"执行文件"字段中输入的值.然后,使用执行文件名(无扩展名)创建与 fndcpesr 的符号链 ...

  8. linux文件系统的设计,基于Linux的文件系统设计.doc

    PAGE PAGE 33 无敌 操作系统课程设计 说 明 书 ? 学 院.系: 软件学院 专 业: 软件工程 学 生 姓 名: 学 号: 设 计 题 目: 基于Linux的模拟文件系统的设计与实现 起 ...

  9. 基于 Lerna 管理 packages 的 Monorepo 项目最佳实践

    对于维护过多个package的同学来说,都会遇到一个选择题,这些package是放在一个仓库里维护还是放在多个仓库里单独维护,本文通过一个示例讲述了如何基于Lerna管理多个package,并和其它工 ...

最新文章

  1. !important------至高无上的宝剑
  2. 【Python】关于jupyter几个不得不知道的tips
  3. php ci model条件查询,php – CodeIgniter中的多条件WHERE子句
  4. 假设以带头结点的循环链表表示队列_数据结构·链表(C实现)
  5. NYOJ-括号配对问题(数据结构)
  6. 前端 HTML 获取自定义标签tag 的值方法
  7. ShaderForge插件介绍详解
  8. 【强大的数字设计工具包】Sketch 55.1 for Mac
  9. 全国计算机绘图师第三期工业产品,工业产品类CAD技能等级考试试题集
  10. [答疑]什么是“消极需求“
  11. 四川贝利思科技:拼多多商品砍价技巧
  12. 宇枫资本上班族理财的方法
  13. 博弈论(van♂游戏) 笔记
  14. visio2013 如何快速画出所有箭头
  15. code first修改表或字段
  16. 轴承产生震动是什么原因?
  17. 要用什么态度去面对生活?
  18. AVplayer断网播放出错时player的duration、playableDuration、totalTime
  19. 百度非企渠道开户怎么玩?
  20. 设备漏电对计算机影响,机箱漏电会不会影响电脑 机箱漏电会不会烧电脑主机内部硬件吗...

热门文章

  1. 如何使用 Parallels Desktop 虚拟机软件在Mac电脑上安装 Windows11 Arm
  2. qlu第二场排位赛B题题解
  3. c语言2级考试知识点ppt,计算机一级考试历年常见考点总结:PPT演示文稿
  4. JS大坑之17位以后的Number类型数值精度丢失问题
  5. * 使用VC2005的感受 , 写给在彷徨Vc6.0 和 VC2005 之间的XDJM *
  6. 旋转数组(将数组元素循环右移k次)
  7. Vantage XenaLine产线流量测试仪
  8. 算法自我分析——汉诺塔算法
  9. Pymoo学习 (11):有偏随机密匙遗传算法 (BRKGA: Biased Random Key Genetic Algorithm) 的使用
  10. 学计算机能不能挣上千万,985名校毕业,年薪不如二本计算机毕业生,学长:千万别选错专业...