huike汇客CRM项目实战-勇于突破

Minio技术

导入依赖:

 <!--minio-->
<dependency>
   <groupId>io.minio</groupId>
   <artifactId>minio</artifactId>
   <version>8.3.3</version>
</dependency>

FileUploader.java

import io.minio.BucketExistsArgs;
import io.minio.MakeBucketArgs;
import io.minio.MinioClient;
import io.minio.UploadObjectArgs;
import io.minio.errors.MinioException;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

public class FileUploader {
  public static void main(String[] args)
      throws IOException, NoSuchAlgorithmException, InvalidKeyException {
    try {
      // Create a minioClient with the MinIO server playground, its access key and secret key.
      MinioClient minioClient =
          MinioClient.builder()
              .endpoint("https://play.min.io")
              .credentials("Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG")
              .build();

      // Make 'asiatrip' bucket if not exist.
      boolean found =
          minioClient.bucketExists(BucketExistsArgs.builder().bucket("asiatrip").build());
      if (!found) {
        // Make a new bucket called 'asiatrip'.
        minioClient.makeBucket(MakeBucketArgs.builder().bucket("asiatrip").build());
      } else {
        System.out.println("Bucket 'asiatrip' already exists.");
      }

      // Upload '/home/user/Photos/asiaphotos.zip' as object name 'asiaphotos-2015.zip' to bucket
      // 'asiatrip'.
      minioClient.uploadObject(
          UploadObjectArgs.builder()
              .bucket("asiatrip")
              .object("asiaphotos-2015.zip")
              .filename("/home/user/Photos/asiaphotos.zip")
              .build());
      System.out.println(
          "'/home/user/Photos/asiaphotos.zip' is successfully uploaded as "
              + "object 'asiaphotos-2015.zip' to bucket 'asiatrip'.");
    } catch (MinioException e) {
      System.out.println("Error occurred: " + e);
      System.out.println("HTTP trace: " + e.httpTrace());
    }
  }
}

编写上传文件代码:

@Service
@Slf4j
public class SysFileServiceImpl implements ISysFileService{

    @Autowired
    MinioConfig minioConfig;

    /**
     * 文件上传至Minio
     * 使用try catch finally进行上传
     * finally里进行资源的回收
     */
    @Override
    public AjaxResult upload(MultipartFile file) {
        InputStream inputStream = null;
        //创建Minio的连接对象
        MinioClient minioClient = getClient();
        String bucketName = minioConfig.getBucketName();
        try {
            //1.获取文件输入流
            inputStream = file.getInputStream();

            //2.获取文件名,并用UUID生成不重复的文件名
            String filename = file.getOriginalFilename();
            //创建文件名,防止重名
            String objectName = UUID.randomUUID().toString() + filename.substring(filename.lastIndexOf("."));

            //3.按照日期分类,huike-crm/2023/01/01/目录下
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
            String dateString = sdf.format(new Date());
            objectName=dateString+"/"+objectName;

            //4.检查桶是否存在
            boolean isExist = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
            if (!isExist){
                minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());//如果不存在则创建桶
            }
            //上传文件
            minioClient.putObject(PutObjectArgs
                    .builder()
                    .bucket(bucketName)//桶名称
                    .object(objectName)//文件名
                    .stream(inputStream,file.getSize(),-1)//需要上传的文件
                    .contentType(file.getContentType())//文件类型
                    .build());
/**
             * 构建返回结果集
             */
            AjaxResult ajax = AjaxResult.success();
            /**
             * 封装需要的数据进行返回
             */
            ajax.put("url",minioConfig.getEndpoint()+"/"+bucketName+"/"+objectName);
            ajax.put("fileName",filename);
            return ajax;
        }catch(Exception e){
            e.printStackTrace();
            return AjaxResult.error("上传失败");
        }finally {
            //防止内存泄漏
            if (inputStream != null) {
                try {
                    inputStream.close(); // 关闭流
                } catch (IOException e) {
                    log.debug("inputStream close IOException:" + e.getMessage());
                }
            }
        }
    }
    /**
     * 免费提供一个获取Minio连接的方法
     * 获取Minio连接
     * @return
     */
    private MinioClient getClient(){
        MinioClient minioClient =
                MinioClient.builder()
                        .endpoint("http://"+minioConfig.getEndpoint()+":"+ minioConfig.getPort())
                        .credentials(minioConfig.getAccessKey(),minioConfig.getSecretKey())
                        .build();
        return minioClient;
    }
}
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值