资源操作抽到service

This commit is contained in:
none
2023-03-07 13:47:53 +08:00
parent 2ea4166fab
commit 65ec26c545
4 changed files with 145 additions and 73 deletions

View File

@@ -0,0 +1,23 @@
package xyz.playedu.api.service;
import org.springframework.web.multipart.MultipartFile;
/**
* @Author 杭州白书科技有限公司
* @create 2023/3/7 13:29
*/
public interface MinioService {
String url(String path);
String saveFile(MultipartFile file, String savePath, String contentType);
String uploadId(String path);
String chunkPreSignUrl(String filename, String partNumber, String uploadId);
String merge(String filename, String uploadId);
void removeByPath(String path);
}

View File

@@ -0,0 +1,88 @@
package xyz.playedu.api.service.impl;
import io.minio.GetPresignedObjectUrlArgs;
import io.minio.MinioClient;
import io.minio.PutObjectArgs;
import io.minio.RemoveObjectArgs;
import io.minio.http.Method;
import lombok.SneakyThrows;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import xyz.playedu.api.config.MinioConfig;
import xyz.playedu.api.service.MinioService;
import xyz.playedu.api.vendor.PlayEduMinioClient;
import java.util.HashMap;
import java.util.Map;
/**
* @Author 杭州白书科技有限公司
* @create 2023/3/7 13:29
*/
@Service
public class MinioServiceImpl implements MinioService {
@Autowired
private MinioConfig c;
@Autowired
private MinioClient client;
@Autowired
private PlayEduMinioClient playEduMinioClient;
@Override
public String url(String path) {
return c.getDomain() + c.getBucket() + path;
}
@Override
@SneakyThrows
public String saveFile(MultipartFile file, String savePath, String contentType) {
PutObjectArgs objectArgs = PutObjectArgs.builder()
.bucket(c.getBucket())
.object(savePath)
.stream(file.getInputStream(), file.getSize(), -1)
.contentType(contentType)
.build();
client.putObject(objectArgs);
return url(savePath);
}
@Override
public String uploadId(String path) {
return playEduMinioClient.uploadId(c.getBucket(), path);
}
@Override
@SneakyThrows
public String chunkPreSignUrl(String filename, String partNumber, String uploadId) {
Map<String, String> extraQueryParams = new HashMap<>();
extraQueryParams.put("partNumber", partNumber + "");
extraQueryParams.put("uploadId", uploadId);
return client.getPresignedObjectUrl(
GetPresignedObjectUrlArgs.builder()
.bucket(c.getBucket())
.object(filename)
.method(Method.PUT)
.expiry(60 * 60 * 24)
.extraQueryParams(extraQueryParams)
.build()
);
}
@Override
public String merge(String filename, String uploadId) {
playEduMinioClient.merge(c.getBucket(), filename, uploadId);
return url(filename);
}
@Override
@SneakyThrows
public void removeByPath(String path) {
client.removeObject(RemoveObjectArgs.builder().bucket(c.getBucket()).object(path).build());
}
}