MinioSysFileServiceImpl.java 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package com.ruoyi.file.service;
  2. import java.io.InputStream;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.stereotype.Service;
  5. import org.springframework.web.multipart.MultipartFile;
  6. import com.alibaba.nacos.common.utils.IoUtils;
  7. import com.ruoyi.file.config.MinioConfig;
  8. import com.ruoyi.file.utils.FileUploadUtils;
  9. import io.minio.MinioClient;
  10. import io.minio.PutObjectArgs;
  11. /**
  12. * Minio 文件存储
  13. *
  14. * @author ruoyi
  15. */
  16. @Service
  17. public class MinioSysFileServiceImpl implements ISysFileService
  18. {
  19. @Autowired
  20. private MinioConfig minioConfig;
  21. @Autowired
  22. private MinioClient client;
  23. /**
  24. * Minio文件上传接口
  25. *
  26. * @param file 上传的文件
  27. * @return 访问地址
  28. * @throws Exception
  29. */
  30. @Override
  31. public String uploadFile(MultipartFile file) throws Exception
  32. {
  33. InputStream inputStream = null;
  34. try
  35. {
  36. String fileName = FileUploadUtils.extractFilename(file);
  37. inputStream = file.getInputStream();
  38. PutObjectArgs args = PutObjectArgs.builder()
  39. .bucket(minioConfig.getBucketName())
  40. .object(fileName)
  41. .stream(inputStream, file.getSize(), -1)
  42. .contentType(file.getContentType())
  43. .build();
  44. client.putObject(args);
  45. return minioConfig.getUrl() + "/" + minioConfig.getBucketName() + "/" + fileName;
  46. }
  47. catch (Exception e)
  48. {
  49. throw new RuntimeException("Minio Failed to upload file", e);
  50. }
  51. finally
  52. {
  53. IoUtils.closeQuietly(inputStream);
  54. }
  55. }
  56. }