阶段5 3.微服务项目【学成在线】_day04 页面静态化_18-页面静态化-模板管理-GridFS研究-取文件
需要创建mongoDB的配置类1
配置类里面主要创建。GridFSBucket这个对象。这个对象的作用就是用来打开一个下载流
在cms的微服务下,在config下创建MongoConfig。这个时候就需要用到spring的注解。@Configuration。加上这个注解。这个类就相当于是一个Bean。
用这个标识的类,spring的容器子在启动的时候。会扫描到这个Bean,然后就会把这个Bean注册到IOC容器中
这个类就是从配置文件中读取到mongo的database。
在创建GridFSBucket的时候需要指定是哪个数据库
- 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的数据库信息
测试类测试
cms的微服务下,测试类GridFsTest内。注入GridFsBucket。目的是打开一个下载流
查询用到Criteria,Criteria就是一个条件对象。
criteria
- 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);
- }
- }
删除文件
自行测试
阶段5 3.微服务项目【学成在线】_day04 页面静态化_18-页面静态化-模板管理-GridFS研究-取文件的更多相关文章
- 阶段5 3.微服务项目【学成在线】_day04 页面静态化_17-页面静态化-模板管理-GridFS研究-存文件
将模板信息保存在cms_template里面 存储在fs.chunks这个集合中.这个集合里面存的是分块文件. fs.files存的是文件的基本信息 chunks存的是块信息 创建测试文件 在cms的 ...
- 阶段5 3.微服务项目【学成在线】_day04 页面静态化_16-页面静态化-模板管理-模板制作
这是轮播图的原始文件 运行门户需要把 nginx启动起来 单独运行轮播图.把里面的css的引用都加上网址的url 这就是单独访问到的轮播图的效果 轮播图模板的地址: 阶段5 3.微服务项目[学成在线] ...
- 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_16-CMS前端工程创建-导入系统管理前端工程
提供了基于脚手架封装好的前端工程 H:\BaiDu\黑马传智JavaEE57期 2019最新基础+就业+在职加薪\阶段5 3.微服务项目[学成在线]·\day02 CMS前端开发\资料\xc-ui-p ...
- 阶段5 3.微服务项目【学成在线】_day16 Spring Security Oauth2_03-用户认证技术方案-Oauth2协议
2.2 Oauth2认证 2.2.1 Oauth2认证流程 第三方认证技术方案最主要是解决认证协议的通用标准 问题,因为要实现 跨系统认证,各系统之间要遵循一定的 接口协议. OAUTH协议为用户资源 ...
- 阶段5 3.微服务项目【学成在线】_day16 Spring Security Oauth2_01-用户认证需求分析
1.1 用户认证与授权 截至目前,项目已经完成了在线学习功能,用户通过在线学习页面点播视频进行学习.如何去记录学生的学习过程 呢?要想掌握学生的学习情况就需要知道用户的身份信息,记录哪个用户在什么时间 ...
- 阶段5 3.微服务项目【学成在线】_day09 课程预览 Eureka Feign_05-Feign远程调用-客户端负载均衡介绍
2 Feign远程调用 在前后端分离架构中,服务层被拆分成了很多的微服务,服务与服务之间难免发生交互,比如:课程发布需要调用 CMS服务生成课程静态化页面,本节研究微服务远程调用所使用的技术. 下图是 ...
- 阶段5 3.微服务项目【学成在线】_day09 课程预览 Eureka Feign_02-Eureka注册中心-搭建Eureka单机环境
我们先搭建单机环境 govern是治理的意思, 这样就把工程创建好了 创建包 创建SpringBoot的启动类. 在父工程里面已经确定了Spring Cloud的版本了.相当于锁定了版本 接下里只需要 ...
- 阶段5 3.微服务项目【学成在线】_day09 课程预览 Eureka Feign_04-Eureka注册中心-将服务注册到Eureka Server
cms相当于客户端 配置客户端的信息 后面加逗号分隔开 50102表示向两台eureka服务上报服务,如果有一台死掉了 那么还可以上另外的一台去注册服务 直接把ip注册到eureka 启动类加注解 重 ...
- 阶段5 3.微服务项目【学成在线】_day09 课程预览 Eureka Feign_01-Eureka注册中心-Eureka介绍
1 Eureka注册中心 1.1 需求分析 在前后端分离架构中,服务层被拆分成了很多的微服务,微服务的信息如何管理?Spring Cloud中提供服务注册中 心来管理微服务信息. 为什么 要用注册中心 ...
随机推荐
- linux下安装nginx+php+mysql环境 详细教程
话不多说上代码 linux环境:centos 7.0 64位 nginx:nginx-1.8.0.tar.gz php: php-7.1.1.tar.gz mysql: mysql-5.6.21.ta ...
- 深入理解Kubernetes资源限制:内存
写在前面 当我开始大范围使用Kubernetes的时候,我开始考虑一个我做实验时没有遇到的问题:当集群里的节点没有足够资源的时候,Pod会卡在Pending状态.你是没有办法给节点增加CPU或者内存的 ...
- 数据库连接池,DBUtil的模板,dbcp,c3p0
数据库连接池,DBUtil的模板,Druid使用(重点) 一.DBUtil模板 public class DBUtilTest { public static Connection connectio ...
- 用js刷剑指offer(跳台阶)
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 牛客网链接 思路 这一题和斐波那契数列思路完全一样. 假如青蛙从第n个 ...
- mongodb的基本操作之更新不存在的数据
查找y为100的数据 db.test_collection.find({y:100}) 发现没有,这时候将y为100的数据更新为y为999的数据 db.test_collection.update({ ...
- Spring-使用JAVA的方式配置Spring-代理模式
9.使用Java的方式配置Spring 我们现在要完全不使用Spring的xml配置了,全权交给Java来做! JavaConfig是Spring的一个子项目,在Spring4之后,它成为了一个核心功 ...
- linux实操_shell
简单shell编写: 执行方式: (1)推荐 (2)不推荐
- python字典的增删改查操作
一.字典 (键值对) 1.字典的基本格式:{key1:1,key2:2} 2.字典里的键必须是不可变的(如:数字,字符串,元组,bool值);值是可变的,可用数字,字符串,列表,字典等. 3.字典里 ...
- Linux文件删除的原理
Linux文件iNode和block是否删除是通过 i_link 和 i_count 的计数值来判断的.只有i_count 和 I_link 同时为0 的 时候,文件的 iNode和block才 ...
- scapy2 爬取全站,以及使用post请求
前情提要: 一:scrapy 爬取妹子网 全站 知识点: scrapy回调函数的使用 二: scrapy的各个组件之间的关系解析 Scrapy 框架 Scrapy是用纯Python实现一个为了爬取网 ...