Spring Data MongoDB:使用GridFS保存二进制文件
来源:互联网 发布:淘宝小号ip地址查询 编辑:程序博客网 时间:2024/06/07 06:50
在MongoDB中,可以使用GridFS保存二进制文件。本文介绍如何使用GridFsTemplate
保存和读取图片文件。
1. GridFS - 保存(使用Spring注解方式)
import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.mongodb.config.AbstractMongoConfiguration;import org.springframework.data.mongodb.gridfs.GridFsTemplate;import com.mongodb.Mongo;import com.mongodb.MongoClient;/** * Spring MongoDB configuration file * */@Configurationpublic class SpringMongoConfig extends AbstractMongoConfiguration{ @Bean public GridFsTemplate gridFsTemplate() throws Exception { return new GridFsTemplate(mongoDbFactory(), mappingMongoConverter()); } @Override protected String getDatabaseName() { return "yourdb"; } @Override @Bean public Mongo mongo() throws Exception { return new MongoClient("127.0.0.1"); }}
import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import org.springframework.context.ApplicationContext;import org.springframework.context.annotation.AnnotationConfigApplicationContext;import org.springframework.data.mongodb.gridfs.GridFsOperations;import com.mkyong.config.SpringMongoConfig;import com.mongodb.BasicDBObject;import com.mongodb.DBObject;/** * GridFs example * * @author zong * */public class GridFsAppStore { public static void main(String[] args) { ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringMongoConfig.class); GridFsOperations gridOperations = (GridFsOperations) ctx.getBean("gridFsTemplate"); DBObject metaData = new BasicDBObject(); metaData.put("extra1", "anything 1"); metaData.put("extra2", "anything 2"); InputStream inputStream = null; try { inputStream = new FileInputStream("/Users/mkyong/Downloads/testing.png"); gridOperations.store(inputStream, "testing.png", "image/png", metaData); } catch (FileNotFoundException e) { e.printStackTrace(); } finally { if (inputStream != null) { try { inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } System.out.println("Done"); }}
使用MongoDB控制台查看保存的文件:
> show dbsyourdb 0.203125GB> use yourdbswitched to db yourdb> show collectionsfs.chunksfs.filessystem.indexes> db.fs.files.find(){ "_id" : ObjectId("51641c5630045c9b3db35afc"), "chunkSize" : NumberLong(262144),"length" : NumberLong(4238), "md5" : "9969527cd95a5a573f15e953f0036800", "filename" : "testing.png","contentType" : "image/png", "uploadDate" : ISODate("2013-04-09T13:49:10.104Z"),"aliases" : null, "metadata" : { "extra1" : "anything 1", "extra2" : "anything 2" } }>> db.fs.chunks.find(){ "_id" : ObjectId("51641c5630045c9b3db35afd"),"files_id" : ObjectId("51641c5630045c9b3db35afc"), "n" : 0,"data" : BinData(0,"/9j/4AAQSkZJRgABAgAAZ......EQH/9k=") }
图片信息保存在fs.files
,图片的二进制流保存在fs.chunks
,通过_id
和files_id
关联。
2. GridFS - 读取(使用xml方式)
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mongo="http://www.springframework.org/schema/data/mongo" xsi:schemaLocation="http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <mongo:db-factory id="mongoDbFactory" dbname="yourdb" /> <mongo:mapping-converter id="converter" /> <bean name="gridFsTemplate" class="org.springframework.data.mongodb.gridfs.GridFsTemplate"> <constructor-arg ref="mongoDbFactory" /> <constructor-arg ref="converter" /> </bean></beans>
import java.io.IOException;import java.util.List;import org.springframework.context.ApplicationContext;import org.springframework.context.support.GenericXmlApplicationContext;import org.springframework.data.mongodb.core.query.Criteria;import org.springframework.data.mongodb.core.query.Query;import org.springframework.data.mongodb.gridfs.GridFsOperations;import com.mongodb.BasicDBObject;import com.mongodb.DBObject;import com.mongodb.gridfs.GridFSDBFile;/** * GridFs example * * @author zong * */public class GridFsAppRead { public static void main(String[] args) { ApplicationContext ctx = new GenericXmlApplicationContext("SpringConfig.xml"); GridFsOperations gridOperations = (GridFsOperations) ctx.getBean("gridFsTemplate"); List<GridFSDBFile> result = gridOperations.find( new Query().addCriteria(Criteria.where("filename").is("testing.png"))); for (GridFSDBFile file : result) { try { System.out.println(file.getFilename()); System.out.println(file.getContentType()); //save as another image file.writeTo("/Users/mkyong/Downloads/new-testing.png"); } catch (IOException e) { e.printStackTrace(); } } System.out.println("Done"); }}
阅读全文
0 0
- Spring Data MongoDB:使用GridFS保存二进制文件
- Spring Data MongoDB : 保存二进制文件, GridFS例程
- Using MongoDB/GridFS and Spring Data
- mongodb spring-data 使用
- MongoDB保存二进制文件
- 使用mongodb gridfs上传图片
- MongoDB——GridFS使用
- MongoDB GridFS 使用 存储特点
- spring-data-mongodb 使用笔记
- 配置使用Spring Data MongoDB
- 使用Spring Data操作mongoDB
- spring-data-mongodb使用示例
- 通过使用spring-data-mongodb操作mongodb
- MongoDB---GridFS
- MongoDB GridFS
- MongoDB GridFS
- mongodb GridFS
- MongoDB GridFS
- Spring Data MongoDB删除
- XRecyclerView上下拉使用
- javascript中冒泡型事件和捕获型事件
- 类与对象的初始化过程
- Java基础1——Java概述
- Spring Data MongoDB:使用GridFS保存二进制文件
- 为什么我会说JavaScript是世界上最好的语言
- 为什么使用函数?
- Leetcode740. 删除元素获取最大值
- C/C++ --MPI安装MPICH2小问题
- Object类
- bzoj1036树链剖分模板题
- Scapy学习笔记一
- 调试器试图再次打电话