专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

MongoDB-GridFS基本操作总结

54_1.png

##

前言

最近spring boot项目中用到mongodb的gridFs,把mongodb当文件系统来用配置操作有些多,这里对基本操作做个总结,以后忘记了可以即时来查阅。[]~( ̄▽ ̄)~*

使用步骤

1. pom配置

spring boot中集成了mongodb,直接引入就行

<dependency>    
    <groupId>org.springframework.boot</groupId>    
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

2. yml配置

就是一个通用的mongoDB数据库配置

spring:  
    application:    
        name: [应用服务名]
    data:    
        mongodb:      
            uri:  mongodb://localhost:27017 [mongdb的url]     
            database: xc_cms [数据库名]

3. config类配置

基本包结构和启动类配置好了以后,建一个 GridFsTemplateConfig类

54_2.png

@Configuration
public class GridFsTemplateConfig {

    @Value("${spring.data.mongodb.database}")
    private String db;

    @Bean
    public GridFSBucket getGridFSBucket(MongoClient mongoClient) {
        MongoDatabase database = mongoClient.getDatabase(db);
        return GridFSBuckets.create(database);
    }
}

4. 新建测试

建立一个测试类54_3.png

先贴一下基本框架代码

@SpringBootTest
@RunWith(SpringRunner.class)
public class GridFsTemplateTest {

    @Resource   // 这个是spring容器里原来就有的,直接调用
    private GridFsTemplate gridFsTemplate;

    @Resource  // 这个是之前在config里配置的
    private GridFSBucket gridFSBucket;

}

5. 保存文件到GridFS

    @Test
    public void testGridFs() throws FileNotFoundException {
        File file = new File("D:\\2.png");
        FileInputStream fileInputStream = new FileInputStream(file);
//    参数 content=fileInputStream  filename="测试用例2"  contentType="", 返回fileID
        ObjectId objectId = gridFsTemplate.store(fileInputStream, "测试用例2", "");
        String fileId = objectId.toString();
        System.out.println(fileId);
    }

看一下gridFsTemplate.store方法

        /*
     * (non-Javadoc)
     * @see org.springframework.data.mongodb.gridfs.GridFsOperations#store(java.io.InputStream, java.lang.String, java.lang.String)
     */
    public ObjectId store(InputStream content, @Nullable String filename, @Nullable String contentType) {
        return store(content, filename, contentType, (Object) null);
    }

开启测试,窗口中打印出了fileID

54_4.png

查看数据库xc_cms-> fs.files集合,最后一个document就是插入的文件信息,文件里面的具体数据保存在了fs.chunks集合

54_5.png

6. 从GridFs中读文件

就用上次的保存的文件为例(fileId: 5e858277c0e732084022cfcf),下面是基本模板

    @Test
    public void testGridBucket() throws IOException {
        String fileId = "5e858277c0e732084022cfcf";
//      根据id查询文件
        GridFSFile fsFile = gridFsTemplate.findOne(Query.query(Criteria.where("_id").is(fileId)));
//      打开下载流对象
        GridFSDownloadStream gridFSDownloadStream = gridFSBucket.openDownloadStream(fsFile.getObjectId());
//        创建gridFsResource,用于获取流对象
        GridFsResource gridFsResource = new GridFsResource(fsFile, gridFSDownloadStream);
        String s = IOUtils.toString(gridFsResource.getInputStream(), StandardCharsets.UTF_8);
        System.out.println(s);
    }

因为测试的是一个png文件,所以打印出来的是….~( ̄▽ ̄)~*

54_6.png

7. 从GridFs中删除文件

    @Test
    public void testDeleteFile() {
        gridFsTemplate.delete(Query.query(Criteria.where("_id").is("5e858277c0e732084022cfcf")));
    }

成功54_7.png

以上是个人总结,也希望对你有帮助 φ(゜▽゜*)♪

文章永久链接:https://tech.souyunku.com/29476

未经允许不得转载:搜云库技术团队 » MongoDB-GridFS基本操作总结

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们