上传minio文件根据日期分类

关键代码
public Result<String> uploadFile(@RequestParam("file") MultipartFile file) {
    try {

        // 生成唯一的文件名
        String originalFileName = file.getOriginalFilename();
        // 获取当前日期并格式化
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
        String currentDate = sdf.format(new Date());
        // 构造目录路径
        String directoryPath = currentDate;

        //将格式化日期拼接到文件名前形成文件夹
        String uniqueFileName = directoryPath + "/" + minioUtil.generateUniqueFileName(originalFileName);

        InputStream inputStream = file.getInputStream();
        minioClient.putObject(
                PutObjectArgs.builder()
                        .bucket(bucketName)
                        .object(uniqueFileName)
                        .stream(inputStream, inputStream.available(), -1)
                        .contentType(file.getContentType())
                        .build()
        );
        return Result.OK(uniqueFileName);
    } catch (MinioException | IOException | NoSuchAlgorithmException | InvalidKeyException e) {
        e.printStackTrace();
        return Result.error("Error uploading file to MinIO: " + e.getMessage());
    }
}
在这个方法中:
  • SimpleDateFormat 用于格式化当前日期。
  • currentDate 变量包含了格式化后的日期字符串。
  • directoryPath 是基于日期构造的目录路径。
  • objectName 是最终的对象名称,它包含了目录路径和文件名。
当调用 uploadFile方法上传文件时,文件会被放入以当前日期命名的目录中。例如,如果今天是2024年1月1日,文件会被上传到名为 2024/01/01/ 的目录中。
 
MinIO 是一个对象存储服务,它没有目录的概念,所有的对象都是直接存储在桶中。当上传一个文件时,MinIO 会自动创建存储桶和对象路径中的任何缺失部分。
例如,如果有一个名为 my-bucket/2024/01/01/file.txt 的文件路径,并且 my-bucket 存储桶和 2024/01/01/ 路径中的对象不存在,MinIO 会在上传文件时自动创建这些对象。
因此,只需要构造正确的文件路径(包括目录),然后使用 MinIO 的 putObject 方法上传文件即可。MinIO 会处理路径中缺失的对象的创建。
 
点赞

当前页面评论已关闭。

隐藏
变装