package com.cloudroam.extension.file; import com.cloudroam.module.file.AbstractUploader; import com.cloudroam.module.file.FileProperties; import com.cloudroam.module.file.FileTypeEnum; import com.cloudroam.module.file.FileUtil; import com.cloudroam.util.DateUtils; import com.cloudroam.util.MinioUtil; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; import java.io.ByteArrayInputStream; /** * MINIO 文件上传类 */ //@Data //@Configuration //@ConfigurationProperties(prefix = "lin.file.minio") @Slf4j public class MinioUploader extends AbstractUploader { // minio上传的地址 @Value("${lin.file.minio.url}") private String url; // minio上传的accessKey @Value("${lin.file.minio.accessKey}") private String accessKey; // minio上传的secretKey @Value("${lin.file.minio.secretKey}") private String secretKey; @Value("${lin.file.minio.bucket}") private String bucket; @Autowired private FileProperties fileProperties; @Autowired private MinioUtil minioUtil; private String curPath; @Override protected FileProperties getFileProperties() { return fileProperties; } /** * 处理一个文件数据 * * @param bytes 文件数据,比特六 * @param newFilename 新文件名称 * @return 处理是否成功,如果出现异常则返回false,避免把失败的写入数据库 * */ @Override protected boolean handleOneFile(byte[] bytes, String newFilename) { // 不加bucket的文件路径 String path=curPath+ newFilename; ByteArrayInputStream byteInputStream = new ByteArrayInputStream(bytes); try { // 不管有没有bucket都执行创建bucket命令 minioUtil.createBucket(bucket); minioUtil.uploadFile(byteInputStream,bucket,path); log.info("minio文件上传成功".toString()); return true; } catch (Exception e) { // throw new RuntimeException(e); log.error("minio upload file error: {}", e.getMessage()); return false; } } @Override protected String getStorePath(String newFilename) { curPath=DateUtils.getCurrentDateCatalog(); return url+bucket+curPath+newFilename; } @Override protected String getFileType() { return FileTypeEnum.MINIO.getValue(); } }