类 MinioUtils

java.lang.Object
com.cdkjframework.minio.MinioUtils

public class MinioUtils extends Object
  • 构造器详细资料

    • MinioUtils

      public MinioUtils(io.minio.MinioClient client)
      构造函数
  • 方法详细资料

    • getUtf8ByURLDecoder

      public static String getUtf8ByURLDecoder(String str) throws UnsupportedEncodingException
      将URLDecoder编码转成UTF8
      参数:
      str - 待转码的字符串
      返回:
      转码后的字符串
      抛出:
      UnsupportedEncodingException
    • createBucket

      public static void createBucket(String bucketName) throws Exception
      如果一个桶不存在,则创建该桶
      抛出:
      Exception
    • getBucketInfo

      public static Optional<io.minio.messages.Bucket> getBucketInfo(String bucketName) throws Exception
      获取 Bucket 的相关信息
      抛出:
      Exception
    • uploadFile

      public static io.minio.ObjectWriteResponse uploadFile(String bucketName, org.springframework.web.multipart.MultipartFile file, String fileName, ContentTypeEnums contentType) throws Exception
      使用MultipartFile进行文件上传
      参数:
      bucketName - 存储桶
      file - 文件
      fileName - 对象名
      contentType - 类型
      返回:
      抛出:
      Exception
    • uploadFileFragment

      public static ResponseBuilder uploadFileFragment(org.springframework.web.multipart.MultipartFile file, Integer currIndex, Integer totalPieces, String md5) throws Exception
      将文件进行分片上传

      有一个未处理的bug(虽然概率很低很低):

      当两个线程同时上传md5相同的文件时,由于两者会定位到同一个桶的同一个临时目录,两个线程会相互产生影响!
      参数:
      file - 分片文件
      currIndex - 当前文件的分片索引
      totalPieces - 切片总数(对于同一个文件,请确保切片总数始终不变)
      md5 - 整体文件MD5
      返回:
      剩余未上传的文件索引集合
      抛出:
      Exception
    • composeFileFragment

      public static boolean composeFileFragment(String bucketName, String targetName, Integer totalPieces, String md5) throws Exception
      合并分片文件,并放到指定目录 前提是之前已把所有分片上传完毕。
      参数:
      bucketName - 目标文件桶名
      targetName - 目标文件名(含完整路径)
      totalPieces - 切片总数(对于同一个文件,请确保切片总数始终不变)
      md5 - 文件md5
      返回:
      minio原生对象,记录了文件上传信息
      抛出:
      Exception
    • uploadFile

      public io.minio.ObjectWriteResponse uploadFile(String bucketName, String fileName, String filePath) throws Exception
      上传本地文件
      参数:
      bucketName - 存储桶
      fileName - 文件名称
      filePath - 本地文件路径
      抛出:
      Exception
    • uploadFileStream

      public static io.minio.ObjectWriteResponse uploadFileStream(String bucketName, String fileName, InputStream inputStream) throws Exception
      通过流上传文件
      参数:
      bucketName - 存储桶
      fileName - 文件名
      inputStream - 文件流
      抛出:
      Exception
    • isFileExist

      public static boolean isFileExist(String bucketName, String fileName)
      判断文件是否存在
      参数:
      bucketName - 存储桶
      fileName - 文件名
      返回:
      true: 存在
    • isFolderExist

      public boolean isFolderExist(String bucketName, String folderName)
      判断文件夹是否存在
      参数:
      bucketName - 存储桶
      folderName - 目录名称:本项目约定路径是以"/"开头,不以"/"结尾
      返回:
      true: 存在
    • getFilesByPrefix

      public static Iterable<io.minio.Result<io.minio.messages.Item>> getFilesByPrefix(String bucketName, String prefix, boolean recursive)
      获取路径下文件列表
      参数:
      bucketName - 存储桶
      prefix - 文件名称
      recursive - 是否递归查找,false:模拟文件夹结构查找
      返回:
      二进制流
    • getFileStatusInfo

      public io.minio.StatObjectResponse getFileStatusInfo(String bucketName, String fileName) throws Exception
      获取文件信息, 如果抛出异常则说明文件不存在
      参数:
      bucketName - 存储桶
      fileName - 文件名称
      抛出:
      Exception
    • getAllFilesByPrefix

      public List<io.minio.messages.Item> getAllFilesByPrefix(String bucketName, String prefix, boolean recursive) throws Exception
      根据文件前缀查询文件
      参数:
      bucketName - 存储桶
      prefix - 前缀
      recursive - 是否使用递归查询
      返回:
      MinioItem 列表
      抛出:
      Exception
    • removeFiles

      public static Iterable<io.minio.Result<io.minio.messages.DeleteError>> removeFiles(String bucketName, List<String> filePaths)
      批量删除文件
      参数:
      bucketName - 存储桶
      filePaths - 需要删除的文件列表
      返回:
      Result
    • getFileStream

      public InputStream getFileStream(String bucketName, String fileName) throws Exception
      获取文件的二进制流
      参数:
      bucketName - 存储桶
      fileName - 文件名
      返回:
      二进制流
      抛出:
      Exception
    • getFileStream

      public InputStream getFileStream(String bucketName, String fileName, long offset, long length) throws Exception
      断点下载
      参数:
      bucketName - 存储桶
      fileName - 文件名称
      offset - 起始字节的位置
      length - 要读取的长度
      返回:
      二进制流
      抛出:
      Exception
    • copyFile

      public io.minio.ObjectWriteResponse copyFile(String bucketName, String fileName, String srcBucketName, String srcFileName) throws Exception
      拷贝文件
      参数:
      bucketName - 存储桶
      fileName - 文件名
      srcBucketName - 目标存储桶
      srcFileName - 目标文件名
      抛出:
      Exception
    • removeFolder

      @Deprecated public void removeFolder(String bucketName, String fileName) throws Exception
      已过时。
      删除文件夹(未完成)
      参数:
      bucketName - 存储桶
      fileName - 路径
      抛出:
      Exception
    • removeFile

      public void removeFile(String bucketName, String fileName) throws Exception
      删除文件
      参数:
      bucketName - 存储桶
      fileName - 文件名称
      抛出:
      Exception
    • getPresignedObjectUrl

      public static String getPresignedObjectUrl(String bucketName, String fileName) throws Exception
      获得文件外链
      参数:
      bucketName - 存储桶
      fileName - 文件名
      返回:
      url 返回地址
      抛出:
      Exception
    • getPresignedObjectUrl

      public String getPresignedObjectUrl(String bucketName, String fileName, Integer expires) throws Exception
      获取文件外链
      参数:
      bucketName - 存储桶
      fileName - 文件名
      expires - 过期时间 <=7 秒 (外链有效时间(单位:秒))
      返回:
      url
      抛出:
      Exception
    • createFolder

      public io.minio.ObjectWriteResponse createFolder(String bucketName, String folderName) throws Exception
      创建目录
      参数:
      bucketName - 存储桶
      folderName - 目录路径:本项目约定路径是以"/"开头,不以"/"结尾
      抛出:
      Exception