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.MinioClient;
|
import io.minio.PutObjectOptions;
|
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.text.SimpleDateFormat;
|
import java.util.Date;
|
|
@Service
|
public class MinIOServiceImpl implements MinIOService {
|
@Autowired
|
MinioClient minioClient;
|
@Autowired
|
MinIOConfig minIOConfig;
|
|
@Value("${minio.url}")
|
String url;
|
|
@Value("${minio.bucketName}")
|
String bucketName;
|
|
private static final String PATH = "http://221.237.182.28:19000/";
|
|
|
@Override
|
public String getPreviewFileUrl(String fileName) {
|
try {
|
return PATH + bucketName + '/' + fileName;
|
} catch (Exception e) {
|
throw new BusinessException("获取文件预览地址失败");
|
}
|
}
|
|
@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;
|
}
|
}
|