`

【转】Mongodb与spring集成(4)------读写mongo GridFs中的文件

 
阅读更多

 

转自 http://blog.csdn.net/laigood12345/article/details/7414365

 

 

mongodb里面自带有一个分布式文件系统gridFs,它是以块的方式来存储文件的,一般的存储都够用了,国内一个使用例子是视觉中国使用它来进行上亿数据级的图片存储,可以看出这套文件系统还是挺强大的。下面介绍下如何用spring-data-mongodb来对其进行操作,其实spring-data-mongodb并没有对gridfs进行再次封装,我们只能自己根据需要简单封装下接口,mongodb java api中操作gridfs也是很简单的,1.得到DB对象,2.new 一个GridFSInputFile对象,这个对象相当于一个文件记录,包含文件和与这个文件相关的信息。3.调用save方法保存。读取文件时可以根据文件名和id来对文件进行查询,查询出来一个GridFSDBFile 对象,再把这个对象输出到流或文件中。

先注入MongoDbFactory

[java] view plaincopy
  1. @Autowired  
  2.   private MongoDbFactory mongoDbFactory;  

获得DB对象

[java] view plaincopy
  1. DB db = mongoDbFactory.getDb();  

保存文件(其中FS_NAME相当于gridfs文件系统的表名,可以有多个)

[java] view plaincopy
  1. public boolean saveFile(File file, String fileName, String contentType,  
  2.       DBObject metaData) {  
  3.        
  4.     GridFSInputFile gfsInput;  
  5.     try {     
  6.       gfsInput = new GridFS(db, FS_NAME).createFile(file);  
  7.       gfsInput.setFilename(fileName);  
  8.       gfsInput.setContentType(contentType);  
  9.       gfsInput.setMetaData(metaData);  
  10.       gfsInput.save();  
  11.     } catch (IOException e) {  
  12.       log.error(e, e);  
  13.       return false;  
  14.     }  
  15.     return true;  
  16.   }  


通过文件名读取文件

[java] view plaincopy
  1. public GridFSDBFile findFileByName(String fileName){  
  2.     GridFSDBFile gfsFile ;  
  3.     try {        
  4.       gfsFile = new GridFS(db, FS_NAME).findOne(fileName);  
  5.     } catch (Exception e) {  
  6.       log.error(e, e);  
  7.       return null;  
  8.     }  
  9.     return gfsFile;  
  10.   }  


通过id读取文件

[java] view plaincopy
  1. public GridFSDBFile findFileById(String id){  
  2.     GridFSDBFile gfsFile ;  
  3.     try {        
  4.       gfsFile = new GridFS(db, FS_NAME).find(new ObjectId(id));  
  5.     } catch (Exception e) {  
  6.       log.error(e, e);  
  7.       return null;  
  8.     }  
  9.     return gfsFile;  
  10.   }  

输出文件到OutputStream

[java] view plaincopy
  1. private boolean writeToOutputStream(OutputStream out, GridFSDBFile gfsFile) {  
  2.     try {       
  3.       gfsFile.writeTo(out);  
  4.     } catch (IOException e) {  
  5.       log.error(e, e);  
  6.       return false;  
  7.     }  
  8.     return true;  
  9.   }  

 

分享到:
评论

相关推荐

    org.mongodb.spark:mongo-spark-connector_2.11:1.1.0

    mongodb-spark官方连接器,运行spark-submit --packages org.mongodb.spark:mongo-spark-connector_2.11:1.1.0可以自动下载,国内网络不容易下载成功,解压后保存到~/.ivy2目录下即可。

    Spring-Data-MongoDB3.2

    Spring Data MongoDB提供了与MongoDB数据库交互的一系列抽象,包括MongoTemplate和Repository接口。通过这些接口,开发人员无需直接编写MongoDB的Java驱动程序代码,就能实现CRUD(创建、读取、更新和删除)操作,...

    mongodb-driver-sync-4.2.3-API文档-中英对照版.zip

    赠送jar包:mongodb-driver-sync-4.2.3.jar; 赠送原API文档:mongodb-driver-sync-4.2.3-javadoc.jar; 赠送源代码:mongodb-driver-sync-4.2.3-sources.jar; 赠送Maven依赖信息文件:mongodb-driver-sync-4.2.3....

    mongodb-driver-core-4.2.3-API文档-中文版.zip

    赠送jar包:mongodb-driver-core-4.2.3.jar; 赠送原API文档:mongodb-driver-core-4.2.3-javadoc.jar; 赠送源代码:mongodb-driver-core-4.2.3-sources.jar; 赠送Maven依赖信息文件:mongodb-driver-core-4.2.3....

    MongoDB Community(mongodb-org-server-5.0.8-1.el7.x86_64.rpm)

    MongoDB Community Server(mongodb-org-server-5.0.8-1.el7.x86_64.rpm)适用于RedHat / CentOS 7.0 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。...

    mongodb-java-driver-4.4.0.jar

    mongodb-java-driver-4.4.0.jar

    MongoDB(mongodb-org-server-5.0.4-1.el7.x86_64.rpm)

    MongoDB Community Server(mongodb-org-server-5.0.4-1.el7.x86_64.rpm)适用于RedHat / CentOS 7.0 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。...

    MongoDB(mongodb-org-mongos-5.0.4-1.el7.x86_64.rpm)

    MongoDB Community Server(mongodb-org-mongos-5.0.4-1.el7.x86_64.rpm)适用于RedHat / CentOS 7.0 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。...

    spring-data-mongodb-1.8.0.RELEASE(含源码)

    Spring Data MongoDB 是 Spring 框架中的一个模块,专门用于简化与 MongoDB 数据库的交互。MongoDB 是一个流行的分布式文档数据库,以其灵活性和高性能而受到开发者们的青睐。Spring Data MongoDB 提供了高级抽象,...

    mongodb-cxx-driver-r3.6.2使用vs2017编译的项目和测试代码

    MongoDB C++驱动程序(mongodb-cxx-driver)是用于与MongoDB数据库进行交互的C++接口,它提供了丰富的API来执行各种数据库操作。本资源包含了版本r3.6.2的驱动程序,该版本适用于使用Visual Studio 2017进行编译。...

    spring-data-mongodb-reference-docs-1.9.4

    spring-data-mongodb-referrence-docs-1.9.4

    mongodb-database-tools-windows-x86_64-100.3.1.zip

    4. mongoexport.exe:与mongoimport相反,它能将MongoDB数据导出为JSON、CSV或TSV格式的文件,便于数据分析或者在不同系统间转移数据。 5. mongofiles.exe:这是一个用于管理和操作MongoDB GridFS文件系统的命令行...

    mongodb-async-driver-2.0.1 jar包

    8. **GridFS**:支持MongoDB的文件存储系统GridFS,用于存储和检索大文件,将文件拆分为多个块存储在MongoDB中。 9. **聚合框架**:提供了强大的聚合功能,允许用户在客户端进行复杂的数据分析,而无需将数据拉取到...

    spring-mongo-data

    标题“spring-mongo-data”指的是Spring Data MongoDB项目,这是一个Java框架,用于简化与MongoDB数据库的交互。Spring Data是Spring框架的一部分,它提供了一种声明式的方法来处理各种数据存储,包括关系型数据库和...

    Spring Data MongoDB中文文档

    - 这些特性极大地丰富了与 MongoDB 交互的方式,使得 **Spring Data MongoDB** 成为了与 MongoDB 集成的理想选择。 总之,**Spring Data MongoDB** 是一个强大的工具,它不仅简化了与 MongoDB 数据库的交互,还提供...

    spring-data-mongodb-cross-store-1.3.5.RELEASE.zip

    标题中的"spring-data-mongodb-cross-store-1.3.5.RELEASE.zip"表明这是一个关于Spring Data MongoDB Cross Store的开源项目,版本为1.3.5.RELEASE。Spring Data是Spring框架的一部分,它提供了与各种数据存储进行...

    spring-boot-starter-data-mongodb-2.2.4.RELEASE.jar

    java运行依赖jar包

    mongodb-driver-core-4.2.3-API文档-中英对照版.zip

    赠送jar包:mongodb-driver-core-4.2.3.jar; 赠送原API文档:mongodb-driver-core-4.2.3-javadoc.jar; 赠送源代码:mongodb-driver-core-4.2.3-sources.jar; 赠送Maven依赖信息文件:mongodb-driver-core-4.2.3....

    Spring-data-mongo应用

    本案例主要介绍了如何在 Spring 4.1.3.RELEASE 版本下集成 MongoDB,并通过 Spring Data MongoDB 1.8.0 进行简单的数据操作。 #### 二、环境准备 - **Spring版本**:4.1.3.RELEASE - **Spring Data MongoDB版本**...

    mongo-scala-drive的使用demo

    在 Scala 中与 MongoDB 进行交互,通常我们会使用 `mongo-scala-driver`,而不是 `mongo-java-driver`,因为 Scala 驱动提供了更符合 Scala 语言特性的 API 设计。本示例将详细介绍如何使用 `mongo-scala-driver` ...

Global site tag (gtag.js) - Google Analytics