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; } }