SpringBoot整合minio实现断点续传、分片上传(附源码)
import io.minio.MinioClient;
import io.minio.PutObjectArgs;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
import java.util.UUID;
@Service
public class MinioService {
@Autowired
private MinioClient minioClient;
@Value("${minio.bucket-name}")
private String bucketName;
public String uploadFile(MultipartFile file) {
String filename = file.getOriginalFilename();
String objectName = UUID.randomUUID().toString() + filename;
try (InputStream inputStream = file.getInputStream()) {
PutObjectArgs putObjectArgs = PutObjectArgs.builder()
.bucket(bucketName)
.object(objectName)
.stream(inputStream, inputStream.available(), -1)
.contentType(file.getContentType())
.build();
minioClient.putObject(putObjectArgs);
return objectName;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
这段代码实现了SpringBoot整合MinIO,并提供了文件上传的功能。使用了MinIO的Java客户端库,通过MinioClient
与MinIO服务器进行交互。上传文件时,使用了UUID来生成新的文件名,避免文件名冲突。同时,为了更好地处理大文件上传,使用了stream
模式来进行文件的上传,并且计算了文件的available
大小来预设内容长度。
评论已关闭