GridFS上传&下载文件

        首先我们先说上传文件到GridFs;上传文件到GridFs上相对比较简单,只需要GridFsTemplate的store方法;

        1.上传文件

        如果文件为String类型则我们需要将其转化为inputstream的流对象,然后在调用store方法,如果需要返回字符串类型则可以使用tostring方法;

InputStream inputStream = IOUtils.toInputStream(htmlContent, "utf-8");
//将html文件上传到GridFs上,返回值为上传文件的id
ObjectId store = gridFsTemplate.store(inputStream, cmsPage.getPageName());
//将id转化为string类型
tring htmlFileId = store.toHexString();

        2.从GridFS上下载文件

                2.1.我们从GridFS上下载文件需要使用到gridFSBucket因此,我们需要创gridFSBucket并交由spring管理,

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

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

                2.2.此时我们就可以正式开始写下载的方法了

              首先,我们需要使用gridFsTemplate的findOne来查找需要下载的文件,然后使用gridFSBucket的openDownloadStream方法来打开下载流,然后使用GridFsResource来操作下载流,通过getTemplate来获得下载流。

        如果你想将下载的文件存在你的电脑上,你也可以创建输出流,通过IOUtils的copy方法来输出;这里我并没有将其存放在本地。

 //根据htmlId查询需要下载的对象
        GridFSFile gridFSFile = gridFsTemplate.findOne(Query.query(Criteria.where("_id").is(htmlFileId)));
        //打开下载流
        GridFSDownloadStream downloadStream = gridFSBucket.openDownloadStream(gridFSFile.getObjectId());
        //操作下载流 参数一个是需要下载的对象 另一个是下载流
        GridFsResource gridFsResource = new GridFsResource(gridFSFile,downloadStream);
        //获取下载流
        try {
            InputStream inputStream = gridFsResource.getInputStream();
            return inputStream;
        } catch (IOException e) {
            log.error("下载模板异常{}",e.getMessage());
            e.printStackTrace();
        }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值