本文来说下如何使用GridFsTemplate来实现文件归类

文章目录

  • 程序测试
  • 本文小结

程序测试

mave文件

 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency>

yml文件

spring:application:name: spirng-boot-mongodbdata:mongodb:host: localhost   #同127.0.0.1port: 27017database: test    #指定操作的数据库

配置文件

@Configuration
public class MongoDBConfig {@Value("${spring.data.mongodb.database}")private String db;@Bean(name = "gridFsPdfBucket")public GridFSBucket getGridFsPdfBucket(MongoClient mongoClient){MongoDatabase mongoDatabase = mongoClient.getDatabase(db);// 注意,这里的bucketName与需要下载的存储桶要保持一致,否则会到默认的fs存储桶中进行下载GridFSBucket bucket = GridFSBuckets.create(mongoDatabase,"pdf_gfs");return bucket;}/**** 自定义桶的名称* @param dbFactory* @param converter* @return*/@Bean(name = "gridFsPdfTemplate")public GridFsTemplate gridFsTestTemplate(MongoDatabaseFactory dbFactory, MongoConverter converter) {return new GridFsTemplate(dbFactory, converter, "pdf_gfs");}//可以把不同类型的文件上传到不同的存储桶中进行进行管理@Bean(name = "gridFsPictureBucket")public GridFSBucket getGridFsPictureBucket(MongoClient mongoClient){MongoDatabase mongoDatabase = mongoClient.getDatabase(db);// 注意,这里的bucketName与需要下载的存储桶要保持一致,否则会到默认的fs存储桶中进行下载GridFSBucket bucket = GridFSBuckets.create(mongoDatabase,"picture_gfs");return bucket;}@Bean(name = "gridFsPictureTemplate")public GridFsTemplate gridFsPictureTemplate(MongoDatabaseFactory dbFactory, MongoConverter converter) {return new GridFsTemplate(dbFactory, converter, "picture_gfs");}}

测试程序

@Slf4j
@RestController
@RequestMapping("/api/file/mongodb")
@Api(tags = "文件上传至mongodb数据库开发测试")
public class FileCommonController {// 文件都上传到pdf_gfs这个存储桶中@Resource(name = "gridFsPdfTemplate")private GridFsTemplate gridFsTemplate;// 从pdf_gfs这个存储桶中下载文件@Resource(name = "gridFsPdfBucket")private GridFSBucket gridFSBucket;/*** 通用上传单个* 文件请求*/@SneakyThrows@PostMapping("/uploadSingleFile")@ApiOperation(value = "上传单个文件")public ResponseBean<?> uploadSingleFile(MultipartFile file) {// 新文件名String originalFilename = file.getOriginalFilename();// 获得文件输入流InputStream ins = file.getInputStream();// 获得文件类型String contentType = file.getContentType();ObjectId objectId = gridFsTemplate.store(ins, originalFilename, contentType);log.info(objectId.toString());log.info("接收文件:" + originalFilename);//返回信息return new ResponseBean<>(200, "上传成功", objectId.toString());}@ApiOperation(value = "使用MongoDB的ID来下载文件")@GetMapping(value = "/downloadFileById")@SneakyThrowspublic byte[] downloadFileById(@RequestParam(name = "file_id") String fileId, HttpServletResponse response)  {Query query = Query.query(Criteria.where("_id").is(fileId));GridFSFile gridFSFile = gridFsTemplate.findOne(query);log.info("文件信息如下 =============>" + gridFSFile);// 解决文件下载的时候,中文乱码的问题String name = new String(gridFSFile.getFilename().getBytes("GBK"), "ISO-8859-1");response.setHeader("Content-Disposition", "attachment;fileName=" + name);GridFSDownloadStream gridFSDownloadStream = gridFSBucket.openDownloadStream(gridFSFile.getObjectId());//创建gridFsResource,用于获取流对象GridFsResource gridFsResource = new GridFsResource(gridFSFile, gridFSDownloadStream);log.info(gridFSFile.getFilename() + "=======>下载成功!!");return IOUtils.toByteArray(gridFsResource.getInputStream());}}

测试结果



本文小结

本文编写了一个测试程序使用GridFsTemplate实现文件归类,当然都保存到默认的fs存储桶中也是可以的。

使用GridFsTemplate来实现文件归类相关推荐

  1. MPLAB IDE 编译器文件归类整理

    今年年初开始接触PIC18F单片机,入手的感觉真心不习惯,使用起来还真有些痛苦,特别是各类文件归类整理,询问长期使用MPLAB IDE的同事怎么设置时,得到的回答是:"不知道",瞬 ...

  2. 将大量文件归类的技巧分享

    有没有可以批量管理桌面文件的方法呢?很多小伙伴们的电脑桌面被大量的文件占据着,想要整理确有心无力,那今天小编就来给大家分享一个可以快速将文件归类的简单操作. 这个方法需要大家在浏览器下载一个叫[固乔文 ...

  3. 将大量文件归类的简单操作

    我们的电脑上有很多的文件,但是没有按要求归类,找起来非常的麻烦,那怎么才能快速的将这些文件进行归类处理呢?今天小编就来给大家分享一个可以快速归类的方法. 这个方法需要大家在浏览器下载一个叫[固乔文件管 ...

  4. 简单几步就能将大量文件归类保存

    电脑桌面的文件又多又乱,那我们想要将这些文件进行归类的处理,有什么好用又快速的归类方法吗?当然有了,今天小编就要来给大家分享一个可以快速将文件进行归类处理的方法,有需要的小伙伴们快进来看具体的步骤吧! ...

  5. 文件归类:如何快速根据文件名称来进行归类。

    文件太多?一个一个归类太过于麻烦,如何批量快速根据文件名称进行归类?要怎么操作呢?今天小编就给大家分享一个办法教大家一个如何去操作. 首先,第一步,我们要进入文件批量改名高手,并点击"文件智 ...

  6. 文件归类整理,教你一个文件夹分配一个文件

    很多用户在电脑里储存了很多文件,虽然不是特别重要的文件,但也不能直接删除,想要整理,但又不知道该如何整理,下面教大家如何按文件数量整理全部文件,比如一个文件夹分配一个文件,下面一起来试试. 所需工具 ...

  7. 文件管理工具,通过文件名称批量将相同标题名称的文件归类并保存

    如何处理文件,比如将有相同文字名称的文件筛选出来呢?今天小编给大家分享一个新的处理技巧,下面一起来试试,希望能给大家带来帮助. 所需工具 文件素材若干 操作步骤 步骤1:打开[文件批量改名高手],在& ...

  8. python爬取文件归类_python爬取各类文档方法归类汇总

    HTML文档是互联网上的主要文档类型,但还存在如TXT.WORD.excel.PDF.csv等多种类型的文档.网络爬虫不仅需要能够抓取HTML中的敏感信息,也需要有抓取其他类型文档的能力.下面简要记录 ...

  9. 文件批量整理归类的方法,按照类型进行归类的操作步骤

    在电脑文档中,经常会出现一个文件夹中,保存了各种类型的文件,如图片.文档,压缩包等等,有适合太多不同类型文件放在一起会显得十分凌乱,而一个个手动整理又显得非常麻烦与浪费时间.小编今天分享一个方法按照类 ...

最新文章

  1. .net内存管理与指针
  2. 基于CORS的geoserver同源访问策略
  3. 把共享库(SO)加载到指定的内存地址
  4. 142. Leetcode 93. 复原 IP 地址 (回溯算法-切割问题)
  5. poj2187(最远点的距离的平方)
  6. win7 nginx mysql php_windows7配置Nginx+php+mysql的详细教程
  7. openstack用户列表_什么是OpenStack超级用户?
  8. 前端:HTML/04/html颜色表示,计算机进制,锚点链接,计算机编码(字符集)
  9. php 调用cron jobs,在CentOS 6.4中使用CronJobs执行PHP不起作用?
  10. 【有利可图网】推荐!设计师必备配色宝典!
  11. 4级网络工程师第5套知识点
  12. MXY-单点登陆系统
  13. 研究生阶段记录3-PCR介绍
  14. 传送门骑士修改服务器数据,《传送门骑士》怎么刷资源 修改存档获取资源方法...
  15. mysql order by file_深聊MySQL,从入门到入坟之:如何让order by、group by查询速度飞起来...
  16. 税务系统计算机设备管理制度,区国税局计算机设备管理办法_规章制度
  17. IPsec:IKEv1和IKEv2区别
  18. biogeme-nest_logit-cnblog
  19. 计算机键盘的功能键在哪,台式电脑home键在哪里(有关电脑按键作用介绍)
  20. 毕业设计-基于JSP实现医院病历管理系统

热门文章

  1. 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~二 DBContext实例中,表实体对象是怎么被加入的...
  2. 手机也能当电脑用?--谈谈未来智能手机操作系统的走向
  3. 采用动态解析设置***
  4. 20180828 上课截图
  5. Fedora 17 安装视频
  6. 看看老外的智慧城市都是咋样的
  7. U盘安装Ubuntu14.04 server版 提示无法挂载cd-rom数据的解决办法
  8. Java知多少(81)框架窗口基础
  9. Redis如何做内存优化?
  10. 聚焦国内名企开源!OSCAR 开源先锋日(1020)全部议程首次曝光