如何自定义MongoDB的存储桶

本文来说下如何自定义MongoDB的存储桶


概述

在使用MongoDB的GridFS的时候,默认存储文件的是fs的存储桶,如navicat所示

在这里插入图片描述


自定义MongoDB的存储桶

那么假如我使用自定义的存储桶pictureFs,该怎么设置呢?首先,查看一下我们通过注解使用的GridFsTemplate的源码,发现提供了构造参数。

 public GridFsTemplate(MongoDatabaseFactory dbFactory, MongoConverter converter, @Nullable String bucket) {
    
    super(converter);
    Assert.notNull(dbFactory, "MongoDbFactory must not be null!");
    this.dbFactory = dbFactory;
    // bucket为存储桶的名字
    this.bucket = bucket;
 }

那么不就是调用构造参数,传入bucket的值不就行了

点进去查看MongoDbFactory和MongoConverter的源码,可知这两个都是接口,总所周知接口不能实例化,而且这两个参数不能为空,可以使用接口的实现类,然后接口实现类不止一个!细看源码,源码注释说的很清楚了,要使用已经给出了的,MongoDbFactory和MongoConverter。首先我们都知道,springboot的ioc依赖注入会把所有的bean类加载到bean容器,那么也就是说,我们可以从bean容器中取出这两个bean。


程序测试

MongoDBConfig

@Configuration
public class MongoDBConfig {

    /***
     * 自定义桶的名称
     * @param dbFactory
     * @param converter
     * @return
     */
    @Bean
    public GridFsTemplate gridFsTemplate(MongoDatabaseFactory dbFactory, MongoConverter converter) {
        return new GridFsTemplate(dbFactory, converter, "pictureFs");
    }
}

文件上传

    /**
     * 通用上传单个
     * 文件请求
     */
    @SneakyThrows
    @PostMapping("/uploadSingleFile")
    @ApiOperation(value = "上传单个文件")
    public ResponseBean<?> uploadSingleFile(MultipartFile file) {

        // 新文件名
        String originalFilename = file.getOriginalFilename();
        // 获得文件输入流
        InputStream ins = file.getInputStream();
        // 获得文件类型
        String contentType = file.getContentType();

        // 将文件存储到mongodb中,mongodb将会返回这个文件的具体信息
//        ObjectId objectId = gridFsTemplate.store(ins, originalFilename, contentType);

        // 上传文件中我们也可以使用DBObject附加一些属性
        DBObject  metadata = new BasicDBObject();
        metadata.put("hello","word");

        ObjectId objectId = gridFsTemplate.store(ins, originalFilename, contentType, metadata);

        log.info(objectId.toString());
        log.info("接收文件:" + originalFilename);

        //返回信息
        return new ResponseBean<>(200, "上传成功", objectId.toString());
    }

程序结果

在这里插入图片描述


本文小结

本文介绍了如何自定义MongoDB的存储桶,后续会对mongodb相关的知识与内容进行持续深入的介绍。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值