第一步:添加依赖
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.4.3</version>
</dependency>
第二步:application.yml配置
spring:
# 配置文件上传大小限制
servlet:
multipart:
max-file-size: 200MB
max-request-size: 200MB
minio:
endpoint: http://127.0.0.1:9005
accessKey: minioadmin
secretKey: minioadmin
bucketName: wego-simple
第三步:minio配置文件:
@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();
}
}
第四步:minio工具类:
参考博客:https://blog.csdn.net/lianghecai52171314/article/details/129920363
第五步:控制器
@RestController
@RequestMapping("/minio")
public class MinioController {
@Resource
private MinioUtil minioUtil;
/**
* 添加桶
*/
@GetMapping(value = "/create/{bucketName}")
public String create(@PathVariable("bucketName") String bucketName) {
minioUtil.createBucket(bucketName);
return "创建成功";
}
/**
* 检查桶是否存在
*/
@GetMapping(value = "/exist/{bucketName}")
public String exist(@PathVariable("bucketName") String bucketName) {
boolean exists = minioUtil.bucketExists(bucketName);
return "存在:" + exists;
}
/**
* 删除桶
*/
@GetMapping(value = "/remove/{bucketName}")
public String remove(@PathVariable("bucketName") String bucketName) {
boolean res = minioUtil.removeBucket(bucketName);
return "删除:" + res;
}
/**
* 获取所有的桶
* @return
*/
@GetMapping(value = "/getAllBuckets")
public List<Bucket> getAllBuckets() {
List<Bucket> allBuckets = minioUtil.getAllBuckets();
return allBuckets;
}
/**
* 上传图片,直接上传的跟目录
* @param file
* @return
*/
@PostMapping("/upload1")
public String upload1(MultipartFile file) {
if (file.isEmpty() || file.getSize() == 0) {
return "文件为空";
}
try {
String newName = "";
String fileUrl = minioUtil.putObject("wego-simple", file, newName);
return fileUrl;
} catch (Exception e) {
e.printStackTrace();
return "上传失败";
}
}
/**
* 上传图片,指定上传到的目录及重命名
* @param file
* @return
*/
@PostMapping("/upload2")
public String upload2(MultipartFile file) {
if (file.isEmpty() || file.getSize() == 0) {
return "文件为空";
}
try {
String newName = "静静";
String fileUrl = minioUtil.putObject("wego-simple", file, "haha/xixi", newName);
return fileUrl;
} catch (Exception e) {
e.printStackTrace();
return "上传失败";
}
}
/**
* 获取图片的路径【带问号后面的内容】
* @param filename
* @return
*/
@GetMapping("/get1/{filename}")
public String getPic1(@PathVariable("filename") String filename) {
String fileUrl = minioUtil.getObjectUrl("wego-info",filename);
return fileUrl;
}
/**
* 获取图片的路径【不带问号后面的坐标】
* @param filename
* @return
*/
@GetMapping("/get2/{filename}")
public String getPic2(@PathVariable("filename") String filename) {
String fileUrl = minioUtil.getObjectUrl("wego-info",filename);
fileUrl = fileUrl.substring(0, fileUrl.indexOf("?"));
return fileUrl;
}
/**
* 删除图片【不带路径】 localhost/wego/minio/delete1/lisi.jpg
* @param filename
* @return
*/
@DeleteMapping("/delete1/{filename}")
public String delete1(@PathVariable("filename") String filename) {
boolean remove = minioUtil.removeObject("wego-simple",filename);
return remove ? "删除成功" : "失败";
}
/**
* 删除图片【带路径】 localhost/wego/minio/delete2?filename=aa/lisi.jpg
* @param filename
* @return
*/
@DeleteMapping("/delete2")
public String delete2(String filename) {
boolean remove = minioUtil.removeObject("wego-simple",filename);
return remove ? "删除成功" : "失败";
}
/**
* 批量删除,localhost/wego/minio/delete3?filename=aa.jpg&filename=bb.jpg
* @param filename
* @return
*/
@DeleteMapping("/delete3")
public String delete3(String... filename) {
boolean remove = minioUtil.removeObjects("wego-simple",filename);
return remove ? "删除成功" : "失败";
}
@GetMapping("/getBucketObjects")
public List<Item> getBucketObjects() {
List<Item> bucketObjects = minioUtil.getBucketObjects("wego-simple");
return bucketObjects;
}
/**
* 下载图片
* @param filename
*/
@GetMapping("/download/{filename}")
public void downloadPic(@PathVariable("filename") String filename) {
InputStream is = minioUtil.getObject("wego-simple",filename);
byte[] buffer = new byte[1024];
int len = -1;
try {
FileOutputStream fos = new FileOutputStream("aa32.jpg");
while ((len = is.read(buffer)) != -1) {
fos.write(buffer, 0, len);
}
fos.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 下载图片
* @param filename
*/
@GetMapping("/download2/{filename}")
public void downloadPic2(@PathVariable("filename") String filename, HttpServletResponse response) {
minioUtil.getObject("wego-simple",filename, response);
}
}

该文章详细介绍了如何在Java应用中集成Minio服务,包括添加依赖、配置文件设置、客户端配置、工具类的编写以及控制器方法的实现,支持文件上传、下载、删除和桶管理等操作。
1万+

被折叠的 条评论
为什么被折叠?



