当前位置: 首页 > news >正文

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

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

相关文章:

  • js eval()方法处理json字符串
  • 邮件原理你真的造吗
  • hdu 4841 圆桌问题(STL vector)
  • WPF获取窗口句柄
  • PHP面向对象static和const的两段代码示例
  • 安卓飞机大战(二) SurfaceView实现自制背景
  • PHP基础知识
  • JLOI 2013 卡牌游戏
  • Andriod下载源码导入后AndroidManifest.xml小红叉的解决办法
  • IE浏览器下ajax缓存导致数据不更新的解决方法
  • coredata
  • 一个java实现的简单的4则运算器
  • Opengl中矩阵和perspective/ortho的相互转换
  • 学习日志---pyhon入门必备
  • 数组作函数参数传递和函数返回值
  • Android单元测试 - 几个重要问题
  • Apache Pulsar 2.1 重磅发布
  • EventListener原理
  • hadoop集群管理系统搭建规划说明
  • happypack两次报错的问题
  • Javascripit类型转换比较那点事儿,双等号(==)
  • JavaScript 奇技淫巧
  • Kibana配置logstash,报表一体化
  • node学习系列之简单文件上传
  • Python学习笔记 字符串拼接
  • Wamp集成环境 添加PHP的新版本
  • webpack4 一点通
  • 第2章 网络文档
  • 机器学习 vs. 深度学习
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 力扣(LeetCode)22
  • 使用SAX解析XML
  • 项目管理碎碎念系列之一:干系人管理
  • 用 Swift 编写面向协议的视图
  • 智能合约Solidity教程-事件和日志(一)
  • 做一名精致的JavaScripter 01:JavaScript简介
  • 选择阿里云数据库HBase版十大理由
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • # 飞书APP集成平台-数字化落地
  • #if #elif #endif
  • #微信小程序:微信小程序常见的配置传旨
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (二)hibernate配置管理
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (转)Linq学习笔记
  • (转)我也是一只IT小小鸟
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .gitattributes 文件
  • .Net CoreRabbitMQ消息存储可靠机制
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .NET NPOI导出Excel详解
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...