階段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的數據庫信息
spring

測試類測試

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

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

criteria

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






把content複製出來。
數據庫

最終代碼

 

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); } }

 

 

刪除文件

自行測試

 apache

相關文章
相關標籤/搜索