mirror of
https://github.com/PlayEdu/PlayEdu
synced 2025-12-22 18:29:51 +08:00
资源操作抽到service
This commit is contained in:
23
src/main/java/xyz/playedu/api/service/MinioService.java
Normal file
23
src/main/java/xyz/playedu/api/service/MinioService.java
Normal 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);
|
||||
|
||||
}
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user