当前位置:网站首页>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);
}
}
边栏推荐
猜你喜欢

目标检测场景SSD-Mobilenetv1-FPN

线程安全问题及关键字synchronized,volatile

世界上最大的开源基金会 Apache 是如何运作的?

文件加密软件有哪些?保障你的文件安全

【Tensorflow】AttributeError: ‘_TfDeviceCaptureOp‘ object has no attribute ‘_set_device_from_string‘

世界上最大的开源基金会 Apache 是如何运作的?

【ONE·Data || 排序入门】

巴比特 | 元宇宙每日必读:蒂芙尼宣布推出限量版 CryptoPunk 定制吊坠

Diodes and their applications

Object detection scene SSD-Mobilenetv1-FPN
随机推荐
Sentinel源码(六)ParamFlowSlot热点参数限流
shell脚本“画画”
网络安全第六次作业
binary search && tree
一维卷积神经网络_卷积神经网络的基础知识「建议收藏」
GTK:Gdk-CRITICAL **: IA__gdk_draw_pixbuf: assertion ‘GDK_IS_DRAWABLE (drawable)’ failed
乐心湖‘s Blog——MySQL入门到精通 —— 囊括 MySQL 入门 以及 SQL 语句优化 —— 索引原理 —— 性能分析 —— 存储引擎特点以及选择 —— 面试题
[C language] Analysis of function recursion (2)
The bad policy has no long-term impact on the market, and the bull market will continue 2021-05-19
SQL函数 UPPER
标量替换、栈上分配、同步消除
期货具体是如何开户的?
电脑死机,Word忘了保存怎么办?怎么恢复?(编辑器是WPS)
Word | 关于删除分节符(下一页)前面的版式就乱了解决方案
打破文件锁限制,以存储力量助力企业增长新动力
泡利不相容原理适用的空间范围(系统)是多大?
二极管及其应用
世界上最大的开源基金会 Apache 是如何运作的?
Fabric.js 动态设置字号大小
rpm包的卸载与安装[通俗易懂]