你知道什么是.MongoDB GridFS吗? 知道怎么用吗?
目录
一.MongoDB GridFS
- GridFS概述
(1)什么是GridFS
(2) 工作原理
2. GridFS保存文件
2. GridFS读取文件(查询)
3.查询所有
4.GridFS下载
一.MongoDB GridFS
首先,话不多说,直接先来个依赖和配置文件让你更方便操作:
pom.xml
org.springframework.boot
spring-boot-starter-test
org.springframework.boot
spring-boot-starter-data-mongodb
org.projectlombok
lombok
commons-io
commons-io
application.yml
spring:
data:mongodb:
uri: mongodb://root:root@localhost:27017/demo
1. GridFS概述
(1)什么是GridFS
mongoDB用于存储文件
技术。
GridFS是MongoDB提供的用于持久化存储文件的模块,CMS使用MongoDB存储文件,使用GridFS可以快速集成开发。
GridFS自动创建2个集合(表)
(2) 工作原理
在GridFS存储文件是将文件分块存储,文件会按照256KB的大小分割成多个块进行存储,GridFS使用两个集合(collection)存储文件:
- 一个集合是chunks, 用于存储文件的二进制数据;
- 一个集合是files,用于存储文件的元数据信息(文件名称、块大小、上传时间等信息)。
从GridFS中读取文件要对文件的各各块进行组装、合并。
2. GridFS保存文件
使用GridFsTemplate存储文件
这里创建测试类来测试使用:
注意:路径中文件要真实存在(可任意有无数据)
@RunWith(SpringRunner.class)
@SpringBootTest(classes = MgTestApplication.class)
public class TestGridFS {
@Resource
private GridFsTemplate gridFsTemplate;
@Test
public void testStore() throws FileNotFoundException {
// 1.获得文件流
// 1.1.文件
File file = new File("E:\\file\\index.html");
// 1.2.流
FileInputStream is = new FileInputStream(file);
// 2.存储 .store(内容,名称,类型)
ObjectId id = gridFsTemplate.store(is, "测试页面名称", "");
System.out.println(id);
}
}
2. GridFS读取文件(查询)
/**
* 查询
*/
@Test
public void testFind(){
// 条件查询
// 1.条件
Query query = Query.query(Criteria.where("_id").is("5f053f2959d4df55b02e3565"));
// 2.查询
GridFSFile gridFSFile = gridFsTemplate.find(query).first();
// 3.处理结果
System.out.println(gridFSFile.getFilename());
}
3.查询所有
@Test
public void testFindAll() {
// 查询所有
GridFsResource[] resources = gridFsTemplate.getResources("*");
for (GridFsResource gfr : resources) {
System.out.println(gfr.getFilename());
}
}
4.GridFS下载
@Test
public void testDownLoad() throws IOException {
// 下载id为5f053f2959d4df55b02e3565
// 1.获得MongoClient
MongoClientURI clientURI = new MongoClientURI("mongodb://root:root@localhost:27017");
MongoClient mongoClient = new MongoClient(clientURI);
// 2.获得数据库
MongoDatabase database = mongoClient.getDatabase("demo");
// 3.创建模块操作对象
GridFSBucket gridFSBucket = GridFSBuckets.create(database);
// 4.下载
// 4.1.确定下载资源
// 1.条件
Query query = Query.query(Criteria.where("_id").is("5f053f2959d4df55b02e3565"));
// 2.查询
GridFSFile gridFSFile = gridFsTemplate.find(query).first();
// 4.2.具体下载操作
GridFSDownloadStream gridFSDownloadStream = gridFSBucket.openDownloadStream(gridFSFile.getObjectId());
GridFsResource gridFsResource = new GridFsResource(gridFSFile, gridFSDownloadStream);
// 5.获得下载内容
String content = IOUtils.toString(gridFsResource.getInputStream(), "UTF-8");
System.out.println(content);
}
看完恭喜你,又知道了一点点!!!
你知道的越多,不知道的越多!
~感谢志同道合的你阅读, 你的支持是我学习的最大动力 ! **加油 ,陌生人一起努力,共勉!!**
注: 如果本篇有需要改进的地方或错误,欢迎大神们指定一二~~
还没有评论,来说两句吧...