階段5 3.微服務項目【學成在線】_day04 頁面靜態化_18-頁面靜態化-模板管理-GridFS研究-取文件

須要建立mongoDB的配置類1

 


配置類裏面主要建立。GridFSBucket這個對象。這個對象的做用就是用來打開一個下載流

在cms的微服務下,在config下建立MongoConfig。這個時候就須要用到spring的註解。@Configuration。加上這個註解。這個類就至關因而一個Bean。
用這個標識的類,spring的容器子在啓動的時候。會掃描到這個Bean,而後就會把這個Bean註冊到IOC容器中


這個類就是從配置文件中讀取到mongo的database。

在建立GridFSBucket的時候須要指定是哪一個數據庫
java

 

package com.xuecheng.manage_cms.config;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.gridfs.GridFSBucket;
import com.mongodb.client.gridfs.GridFSBuckets;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.gridfs.GridFsTemplate;

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

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

 


這是配置文件內配置的mongo的數據庫信息
web

測試類測試

cms的微服務下,測試類GridFsTest內。注入GridFsBucket。目的是打開一個下載流

查詢用到Criteria,Criteria就是一個條件對象。spring

criteria

美 [kraɪ'tɪriən]
英 [kraɪ'tɪəriən]
  • n.標準;尺度
  • 網絡準則;條件;規準






把content複製出來。
mongodb

最終代碼

 

package com.xuecheng.manage_cms;

import com.mongodb.client.gridfs.GridFSBucket;
import com.mongodb.client.gridfs.GridFSDownloadStream;
import com.mongodb.client.gridfs.model.GridFSFile;
import org.apache.commons.io.IOUtils;
import org.bson.types.ObjectId;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.gridfs.GridFsResource;
import org.springframework.data.mongodb.gridfs.GridFsTemplate;
import org.springframework.test.context.junit4.SpringRunner;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

@SpringBootTest
@RunWith(SpringRunner.class)
public class GridFsTest {
    @Autowired
    GridFsTemplate gridFsTemplate;
    @Autowired
    GridFSBucket gridFSBucket;
    @Test
    public void testGridFsTemplate() throws FileNotFoundException {
        File file = new File("d:/index_banner.ftl");
        FileInputStream fileInputStream = new FileInputStream(file);

        //定義fileInputSream
        ObjectId objectId = gridFsTemplate.store(fileInputStream, "index_banner.ftl");
        System.out.println(objectId);
    }
    @Test
    public void queryFile() throws IOException {
        //根據文件id查詢文件
        GridFSFile gridFsFile = gridFsTemplate.findOne(Query.query(Criteria.where("_id").is("5dbeb89bface36388cb8c7d4")));
        //打開一個下載流對象
        GridFSDownloadStream gridFSDownloadStream = gridFSBucket.openDownloadStream(gridFsFile.getObjectId());
        //建立GridFsResource對象,獲取流
        GridFsResource gridFsResource = new GridFsResource(gridFsFile, gridFSDownloadStream);
        //從流中取數據
        String content = IOUtils.toString(gridFsResource.getInputStream(), "utf-8");
        System.out.println(content);
    }
}

 

 

刪除文件

自行測試

 數據庫

相關文章
相關標籤/搜索