注意
minio 新版本有9000和9090兩個端口,web訪問是9000,但走api上傳和訪問都是9090端口
引入pom文章來源:http://www.zghlxwxcb.cn/news/detail-809581.html
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.2.0</version>
</dependency>
controller文章來源地址http://www.zghlxwxcb.cn/news/detail-809581.html
@PostMapping("uploadMinio")
public static String uploadMinio(@RequestParam("file") MultipartFile multipartFile){
try{
return MinioUtil.upload(multipartFile);
}catch (Exception e){
e.printStackTrace();
return null;
}
}
MinioUtil
import io.minio.BucketExistsArgs;
import io.minio.MakeBucketArgs;
import io.minio.MinioClient;
import io.minio.PutObjectArgs;
import io.minio.errors.*;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.UUID;
public class MinioUtil {
// 替換為你的MinIO服務器地址、端口、訪問密鑰和秘密密鑰
private static final String endpoint = "http://localhost:9090";
private static final String accessKey = "xxx";
private static final String secretKey = "xxx";
private static final String bucketName = "xxx";
private static final String host = "http://localhost:9090/" + bucketName + "/";
public static String upload(MultipartFile multipartFile) throws IOException {
InputStream inputStream = null;
try {
MinioClient minioClient = MinioClient.builder()
.endpoint(endpoint)
.credentials(accessKey, secretKey)
.build();
// 獲取文件后綴
String suffix = getFileExtension(multipartFile.getOriginalFilename());
if (StringUtils.isBlank(suffix)) {
return "";
}
// 修改 objectName 為正確的文件名 + 后綴
String objectName = UUID.randomUUID().toString().replaceAll("-", "") + "." + suffix;
inputStream = convertMultipartFileToInputStream(multipartFile);
// 檢查存儲桶是否存在,如果不存在則創(chuàng)建
if (!minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build())) {
minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
}
// 上傳文件
minioClient.putObject(
PutObjectArgs.builder()
.bucket(bucketName)
.object(objectName)
.stream(inputStream, multipartFile.getSize(), -1)
.contentType("application/octet-stream") // 設置文件類型
.build());
return host + objectName; // 返回上傳后的對象名
} catch (IOException | XmlParserException | ServerException | NoSuchAlgorithmException |
InsufficientDataException | InvalidKeyException | InvalidResponseException |
ErrorResponseException | InternalException e) {
return null;
} finally {
inputStream.close();
}
}
public static String getFileExtension(String filePath) {
int lastDotIndex = filePath.lastIndexOf(".");
if (lastDotIndex > 0) {
return filePath.substring(lastDotIndex + 1);
}
return ""; // 如果找不到點或沒有后綴,則返回空字符串
}
public static InputStream convertMultipartFileToInputStream(MultipartFile multipartFile) throws IOException {
return multipartFile.getInputStream();
}
}
到了這里,關(guān)于springboot minio 工具類,一站式解決的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!