如何自定义MongoDB的存储桶
本文来说下如何自定义MongoDB的存储桶
文章目录
- 概述
- 自定义MongoDB的存储桶
- 程序测试
- 本文小结
概述
在使用MongoDB的GridFS的时候,默认存储文件的是fs的存储桶,如navicat所示
自定义MongoDB的存储桶
那么假如我使用自定义的存储桶pictureFs,该怎么设置呢?首先,查看一下我们通过注解使用的GridFsTemplate的源码,发现提供了构造参数。
public GridFsTemplate(MongoDatabaseFactory dbFactory, MongoConverter converter, @Nullable String bucket) {super(converter);Assert.notNull(dbFactory, "MongoDbFactory must not be null!");this.dbFactory = dbFactory;// bucket为存储桶的名字this.bucket = bucket;}
那么不就是调用构造参数,传入bucket的值不就行了?
点进去查看MongoDbFactory和MongoConverter的源码,可知这两个都是接口,总所周知接口不能实例化,而且这两个参数不能为空,可以使用接口的实现类,然后接口实现类不止一个!细看源码,源码注释说的很清楚了,要使用已经给出了的,MongoDbFactory和MongoConverter。首先我们都知道,springboot的ioc依赖注入会把所有的bean类加载到bean容器,那么也就是说,我们可以从bean容器中取出这两个bean。
程序测试
MongoDBConfig
@Configuration
public class MongoDBConfig {/**** 自定义桶的名称* @param dbFactory* @param converter* @return*/@Beanpublic GridFsTemplate gridFsTemplate(MongoDatabaseFactory dbFactory, MongoConverter converter) {return new GridFsTemplate(dbFactory, converter, "pictureFs");}
}
文件上传
/*** 通用上传单个* 文件请求*/@SneakyThrows@PostMapping("/uploadSingleFile")@ApiOperation(value = "上传单个文件")public ResponseBean<?> uploadSingleFile(MultipartFile file) {// 新文件名String originalFilename = file.getOriginalFilename();// 获得文件输入流InputStream ins = file.getInputStream();// 获得文件类型String contentType = file.getContentType();// 将文件存储到mongodb中,mongodb将会返回这个文件的具体信息
// ObjectId objectId = gridFsTemplate.store(ins, originalFilename, contentType);// 上传文件中我们也可以使用DBObject附加一些属性DBObject metadata = new BasicDBObject();metadata.put("hello","word");ObjectId objectId = gridFsTemplate.store(ins, originalFilename, contentType, metadata);log.info(objectId.toString());log.info("接收文件:" + originalFilename);//返回信息return new ResponseBean<>(200, "上传成功", objectId.toString());}
程序结果
本文小结
本文介绍了如何自定义MongoDB的存储桶,后续会对mongodb相关的知识与内容进行持续深入的介绍。
如何自定义MongoDB的存储桶相关推荐
- mongodb安装_MongoDB:GridFS删除方法删除存储桶中的所有文件
mongodb安装 前一段时间,我们遇到了MongoDB GridFS的奇怪行为,这使我为MongoDB Java驱动程序创建了一个故障单. 今天,我在浏览器书签中找到了指向故障单的链接. 该票证目前 ...
- MongoDB:GridFS删除方法删除存储桶中的所有文件
不久前,我们遇到了MongoDB GridFS的奇怪行为,这使我为MongoDB Java驱动程序创建了一个故障 单 . 今天,我在浏览器书签中找到了指向故障单的链接. 该票证目前尚未解决,因此我认为 ...
- aws s3 静态网站_使用AWS S3存储桶启动静态网站
aws s3 静态网站 This article explores the AWS S3 bucket to configure a static website. 本文探讨了用于配置静态网站的AWS ...
- aws rds监控慢sql_将AWS S3存储桶与AWS RDS SQL Server集成
aws rds监控慢sql This article gives you an overview of integrating AWS S3 buckets with AWS RDS SQL Serv ...
- 存储桶上传策略和签名 URL的绕过及利用
本文中带有自己一些拙见,读者若存在相关问题或者有其他想法的,欢迎在评论区交流探讨.原文:https://labs.detectify.com/2018/08/02/bypassing-exploiti ...
- 使用腾讯云存储桶(COS)托管静态网站
使用腾讯云存储桶(COS)托管静态网站 本文介绍如何使用腾讯云服务中的存储桶(COS)托管一个静态网站.这个静态网站可以用于展示个人网站等信息,并且使用腾讯云内容分发网络(CDN)来加速全球各地用户对 ...
- php aws s3查看所有文件_国内AWS没有文件系统服务,快来看如何通过EC2挂载S3存储桶替代...
作者:光环云 尹晓征 当有需求必须使用共享磁盘服务时,但目前AWS的EFS因为在国内落地的情况,只能通过自建诸如NFS或者GFS等服务来完成,整个过程比较繁杂. S3是互联网的一种存储解决方案,并且借 ...
- bash脚本 文件_如何使用Bash脚本来管理从AWS S3存储桶下载和查看文件
bash脚本 文件 As you can read in this article, I recently had some trouble with my email server and deci ...
- MinIO存储桶通知指南
MinIO存储桶通知指南 存储桶(Bucket)如果发生改变,比如上传对象和删除对象,可以使用存储桶事件通知机制进行监控,并通过以下方式发布出去: Notification Targets AMQP ...
最新文章
- 行为驱动开发BDD概要
- ASP.NET Core中的OWASP Top 10 十大风险-SQL注入
- 使用Vert.x进行响应式开发
- 【视觉项目】【day1】8.20号实验记录(初步使用模板匹配)
- admin- 源码解析(流程)
- linux端口转发_详解Linux网桥功能--概念、工作机制、相关命令及实例说明
- JavaScript 学到什么程度可以学 Node.js?
- linux--安装完qt出现 /usr/bin/ld: error: cannot find -lGL错误
- base64 convert to file
- 程序员之路(一年有感)
- 经典机器学习系列(十二)【学习排序】
- 什么是 Rootkit?
- Altium Designer软件插件之封装神器Altium Library Loader
- Mysql和Oracle实现序列自增
- [软件人生]写书与程序员
- 魅族16php7.3系统,魅族16th官方稳定版固件rom系统刷机包:Flyme 7.3.0.0A
- 美剧字幕组长讲述她如何练听力的
- [学习SLAM]VINS中IMU预积分的误差推到公式与代码雅克比(协防差/信息矩阵)构建
- python字符串操作入门十八讲——合集一
- 计算机启动u盘启动不了怎么办,电脑没有U盘启动项怎么办?主板不支持U盘启动怎么办?...