当前位置:网站首页>Minio文件上传
Minio文件上传
2022-08-02 14:01:00 【昊天h1】
文件上传
一,本地上传
/** * @description:最基础的上传 * @author: Teao * @date: 2022/7/8 0:19 * @param: [formData] * @return: com.wangshidai.springboot002.entity.R **/
@PostMapping("/uploadImg")
public R upload(MultipartFile formData) throws IOException {
log.info("开始处理文件上传,文件名是{}",formData.getOriginalFilename()); // 打印日志
// 取到上传的文件的后缀名
String filename = formData.getOriginalFilename();
String s = filename.substring(filename.indexOf("."));
formData.transferTo(new File(("d:\\"+UUID.randomUUID()+s)));// 将UUID.randomUUID()+s随机文件名 文件传到本地服务器去
return new R(200,"上传成功",UUID.randomUUID()+s);
}
二,Minio上传
1.导入依赖
<!--minio-->
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.0.3</version>
</dependency>
2.配置application.yml文件
# minio 参数配置
minio:
endpoint: http://192.168.80.188:9090 # minio 服务地址
accessKey: minioadmin # minio Access key就像用户ID,可以唯一标识你的账户
secretKey: minioadmin # minio Secret key是你账户的密码
bucketName: teao-test # minio 桶名称
3.添加配置文件(MinIoClientConfig)
@Configuration
public class MinIoClientConfig {
@Value("${minio.endpoint}")
private String endpoint;
@Value("${minio.accessKey}")
private String accessKey;
@Value("${minio.secretKey}")
private String secretKey;
/** * 注入minio 客户端 * @return */
@Bean
public MinioClient minioClient(){
return MinioClient.builder()
.endpoint(endpoint)
.credentials(accessKey, secretKey)
.build();
}
}
4.使用
@Value("${minio.bucketName}")
private String bucketName;
@Resource
private MinioClient minioClient;
/** * @description:Minio上传 * @author: Teao * @date: 2022/7/8 8:14 * @param: [formData] * @return: com.wangshidai.springboot002.entity.R **/
@PostMapping("/uploadImg")
public R upload(MultipartFile formData) throws IOException {
log.info("开始处理文件上传,文件名是{}",formData.getOriginalFilename());
// 生成上传随机的文件名
String filename = formData.getOriginalFilename();
String s = filename.substring(filename.indexOf("."));
filename = UUID.randomUUID()+s;
try {
PutObjectArgs objectArgs = PutObjectArgs.builder().object(filename)
.bucket(bucketName)
.contentType(formData.getContentType())
.stream(formData.getInputStream(),formData.getSize(),-1).build();
minioClient.putObject(objectArgs); // 需要注入进来 @Resource private MinioClient minioClient;
// 拼接将要返回的字符串
String url = "http://60.205.214.35:9090/wangshidai-test/"+filename;
return new R(200,"上传成功",url);
} catch (Exception e) {
e.printStackTrace();
return new R(500,"上传失败",null);
}
}
边栏推荐
- 巴比特 | 元宇宙每日必读:蒂芙尼宣布推出限量版 CryptoPunk 定制吊坠
- You can't accept 60% slump, there is no eligible for gain of 6000% in 2021-05-27
- 拯救流浪猫 | 「喵先锋」系列数字版权盲盒明日开抢
- 网络安全第六次作业
- [C language] Analysis of function recursion (3)
- 面试SQL语句,学会这些就够了!!!
- rust使用mysql插入数据
- 关于C#使用DateTime数据的细节
- HALCON: 内存管理(Memory Management)
- uview 2.x版本 tabbar在uniapp小程序里头点击两次才能选中图标
猜你喜欢
【Tensorflow】AttributeError: '_TfDeviceCaptureOp' object has no attribute '_set_device_from_string'
MySQL - ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)
Kunpeng devkit & boostkit
监管再次重拳出击,后市如何?2021-05-22
专访|带着问题去学习,Apache DolphinScheduler 王福政
rhce第三天作业
网络安全第五次作业
Awesome!Alibaba interview reference guide (Songshan version) open source sharing, programmer interview must brush
How to solve 1045 cannot log in to mysql server
科研试剂DSPE-PEG-VIP,二硬脂酰基磷脂酰乙醇胺-聚乙二醇-血管活性肠肽VIP
随机推荐
Data Organization---Chapter 6 Diagram---Graph Traversal---Multiple Choice Questions
机器学习——交叉验证法
VMM是什么?_兮是什么意思
Selenium本地打开远程浏览器
文件加密软件有哪些?保障你的文件安全
ping命令的使用及代码_通过命令查看ping路径
Kunpeng devkit & boostkit
Geoffery Hinton:深度学习的下一个大事件
网络安全第五次作业
tinymce 如何实现动态国际化
一维卷积神经网络_卷积神经网络的基础知识「建议收藏」
目前想通过提取本地excel文件创建数据表,在sql语句这出了一些问题
web测试和app测试的区别?
Configure zabbix auto-discovery and auto-registration.
数据机构---第六章图---图的遍历---选择题
SQL函数 UNIX_TIMESTAMP
面试官:可以谈谈乐观锁和悲观锁吗
Mysql 基本操作指南之mysql查询语句
期货具体是如何开户的?
大而全的pom文件示例