Java实战:Spring Boot利用MinIO实现文件切片上传
import io.minio.MinioClient;
import io.minio.UploadObjectArgs;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
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(InputStream data, String fileName, Long fileSize) throws Exception {
String objectName = UUID.randomUUID().toString() + "-" + fileName;
long partSize = 5 * 1024 * 1024; // 设置每个part的大小为5MB
int partCount = (int) (fileSize / partSize); // 计算总共的part数量
if (fileSize % partSize != 0) {
partCount++;
}
// 使用UploadObjectArgs来构建分片上传的参数
UploadObjectArgs uploadObjectArgs = UploadObjectArgs.builder()
.bucket(bucketName)
.object(objectName)
.filename(fileName)
.contentType("application/octet-stream")
.listener(new ProgressListener()) // 自定义进度监听器
.build();
// 执行分片上传
minioClient.uploadObject(uploadObjectArgs);
return objectName;
}
}
这段代码示例展示了如何在Spring Boot应用中使用MinIO客户端实现文件的分片上传功能。首先,我们注入了MinIO客户端和存储桶名称。然后定义了uploadFile
方法,它接受文件的输入流、文件名和文件大小作为参数。在方法内部,我们生成了一个唯一的对象名,并计算了每个part的大小和总的part数量。最后,我们使用MinIO客户端的uploadObject
方法来执行分片上传,并且可以指定一个进度监听器来跟踪上传进度。
评论已关闭