package com.example.jz.service.impl;
|
|
import cn.hutool.core.util.IdUtil;
|
import com.example.jz.config.MinIOConfig;
|
import com.example.jz.exception.BusinessException;
|
import com.example.jz.service.MinIOService;
|
import io.minio.GetPresignedObjectUrlArgs;
|
import io.minio.MinioClient;
|
import io.minio.PutObjectOptions;
|
import io.minio.UploadObjectArgs;
|
import io.minio.errors.*;
|
import io.minio.http.Method;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import java.io.IOException;
|
import java.security.InvalidKeyException;
|
import java.security.NoSuchAlgorithmException;
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
import java.util.concurrent.TimeUnit;
|
|
@Service
|
public class MinIOServiceImpl implements MinIOService {
|
@Autowired
|
MinioClient minioClient;
|
@Autowired
|
MinIOConfig minIOConfig;
|
|
@Override
|
public String getPreviewFileUrl(String fileName) {
|
String res = null;
|
try {
|
res = minioClient.getPresignedObjectUrl(
|
GetPresignedObjectUrlArgs.builder()
|
.method(Method.GET)
|
.bucket(minIOConfig.getBucketName())
|
.object(fileName)
|
.build());
|
} catch (Exception e) {
|
throw new BusinessException("获取文件预览地址失败");
|
}
|
return res;
|
}
|
|
@Override
|
public String upload(MultipartFile file) {
|
String objectName = null;
|
try {
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
|
objectName = sdf.format(new Date()) + "/" + IdUtil.simpleUUID() + "." + file.getContentType().split("/")[1];
|
PutObjectOptions putObjectOptions = new PutObjectOptions(file.getInputStream().available(), -1);
|
putObjectOptions.setContentType(file.getContentType());
|
minioClient.putObject(minIOConfig.getBucketName(), objectName, file.getInputStream(), putObjectOptions);
|
} catch (Exception e) {
|
throw new BusinessException("上传文件失败");
|
}
|
return objectName;
|
}
|
|
@Override
|
public Boolean delete(String fileName) {
|
try {
|
minioClient.removeObject(minIOConfig.getBucketName(), fileName);
|
} catch (Exception e) {
|
throw new BusinessException("删除文件失败");
|
}
|
return true;
|
}
|
}
|