springboot上传文件到minio中封装的工具类

338 阅读1分钟

springboot上传文件到minio中封装的工具类

minio配置

填写到yaml配置文件中,前缀为minio

```
@Data
@ConfigurationProperties(prefix = "minio")  // 文件上传 配置前缀file.oss
public class MinIOConfigProperties implements Serializable {

    private String accessKey;
    private String secretKey;
    private String bucket;
    private String endpoint;
    private String readPath;
}
```

文件上传代码

```
@Component
@Slf4j
public class FileOperations {

    @Autowired
    private MinioClient minioClient;

    @Autowired
    private MinIOConfigProperties minIOConfigProperties;

    private final static String separator = "/";


    /**
     * 根据文件名生成文件路径
     * @param postfix   文件后缀
     * @param filename  文件名
     * @return
     */
    public String builderFilePath(String filename,String postfix) {
        StringBuilder stringBuilder = new StringBuilder(50);

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
        String todayStr = sdf.format(new Date());
        stringBuilder.append(todayStr).append(separator);
        stringBuilder.append(filename).append(postfix);
        return stringBuilder.toString();
    }

    /**
     *  上传文件
     * @return  文件全路径
     */
    public String uploadFile(MultipartFile file) {
        //原始文件名  aaa.txt
        String originalFilename = file.getOriginalFilename();
        //后缀名
        String postfix = originalFilename.substring(originalFilename.lastIndexOf("."));
        //创建存储的文件名
        String filename = System.currentTimeMillis()+ UUID.randomUUID().toString().replace("-","");

        String filePath = builderFilePath(filename,postfix);
        try {

            PutObjectArgs putObjectArgs = PutObjectArgs.builder()
                    .object(filePath)  //文件存储路径
                    .contentType(file.getContentType())  //文件类型
                    .bucket(minIOConfigProperties.getBucket())  //存储桶名
                    .stream(file.getInputStream(),file.getSize(),-1)
                    .build();
            minioClient.putObject(putObjectArgs);
            //拼装访问路劲
            StringBuilder urlPath = new StringBuilder(minIOConfigProperties.getReadPath());
            urlPath.append(separator+minIOConfigProperties.getBucket());
            urlPath.append(separator);
            urlPath.append(filePath);
            return urlPath.toString();
        }catch (Exception ex){
            log.error("minio put file error.",ex);
            throw new RuntimeException("上传文件失败");
        }
    }
}
```