当前位置:网站首页>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);
}
}
边栏推荐
猜你喜欢
Break the limit of file locks and use storage power to help enterprises grow new momentum
RKMPP库快速上手--(一)RKMPP功能及使用详解
保姆级教程:写出自己的移动应用和小程序(篇三)
WeChat Mini Program-Recent Dynamic Scrolling Implementation
定了!就在7月30日!
期货具体是如何开户的?
Embedded system driver primary [2] - based on character device driver _ basic framework
Kunpeng devkit & boostkit
二分查找 && 树
网络安全第四次作业
随机推荐
Some impressions of the 519 plummet 2021-05-21
【Tensorflow】AttributeError: module 'keras.backend' has no attribute 'tf'
Why does a four-byte float represent a wider range than an eight-byte long
苹果,与Web3 “八字不合”
政策利空对行情没有长期影响,牛市仍将继续 2021-05-19
你真的懂单例模式么
网络安全第二次作业
SQL函数 UCASE
网络安全第六次作业
大而全的pom文件示例
Geoffery Hinton:深度学习的下一个大事件
Awesome!Alibaba interview reference guide (Songshan version) open source sharing, programmer interview must brush
微信小程序如何实现支付功能?看官方文档头疼(使用云函数的方式操作)「建议收藏」
ttl电平与rs232电平转换电路(232电平定义)
C语言提高篇(三)
拯救流浪猫 | 「喵先锋」系列数字版权盲盒明日开抢
Based on the flask mall administrator functions
SQL函数 USER
线程安全问题及关键字synchronized,volatile
C language improvement (3)