Minioの用途は、詳細な

次のようにビルド記事、整頓minioバックエンドの使用記事へMinio環境に続き、主な手順は次のとおりです。

  • 1.ジャーパッケージ、Gradleの方法をご紹介:
':丹:io.minio 5.0.2' コンパイル
  • サービスBeanを書きます
    1  @Service
     2  @ SLF4J
     3  パブリック クラスMinioService {
     4  
    5      プライベートMinioClient minioClient。
    6  
    7      プライベート使ってMimetypesFileTypeMapてMimetypesFileTypeMap。
    8  
    9    
    10      @value( "$ {minio.address}" 11の     プライベート文字列のアドレス。
    12  
    13      @value( "$ {minio.accessKey}" 14      プライベート文字列アクセスキー。
    15  
    16      @value( "$ {minio.secretKey}" 17      プライベート文字列秘密鍵。
    18 
    19      パブリック文字列のgetContentType(文字列filename)で{
     20          であれば(てMimetypesFileTypeMap == NULL ){
     21              使ってMimetypesFileTypeMap = 新しいてMimetypesFileTypeMap()。
    22          }
     23          リターンmimetypesFileTypeMap.getContentType(filename)で。
    24      }
     25      @PostConstruct
     26      プライベート ボイドのinit()スロー例外{
     27          minioClient = 新しいMinioClient(アドレス、アクセスキー、秘密鍵)を、
    28      }
     29  
    30      公衆MinioClient getMinioClient(){
     31          リターン この.minioClient。
    32      }
     33      公衆ストリングのgetContentType(文字列filename)で{
     34          であれば(てMimetypesFileTypeMap == NULL ){
     35              使ってMimetypesFileTypeMap = 新しいてMimetypesFileTypeMap()。
    36          }
     37          リターンmimetypesFileTypeMap.getContentType(filename)で。
    38      }
     39  
    40      公衆MinioFile getBucketFromUrl(文字列のURL){
     41          文字列[]スプリット= url.split( "/" )。
    42          もし(split.length <3 ){
     43               新規のRuntimeException( "getBucketFromUrl:URL" + URL + "フォーマットが正しくありません" )。
    44          }
     45          のStringBuilderのStringBuilder = 新規のStringBuilder();
    46          のためにINT I 2 =; I <split.length; I ++ ){
     47              stringBuilder.append(スプリットは、[I])。
    48              の場合(I = split.length - 1!){
     49                  stringBuilder.append( "/" );
    50              }
     51          }
     52          列fileNameに=stringBuilder.toString();
    53          リターン 新しい MinioFile(スプリット[1 ]は、ファイル名)。
    54      }
     55  
    56 }
    コードの表示

     

  • 書き込み、ファイルアップロードサービス
    パブリック クラスUploadService { 
    
        @Autowired 
        MinioService minioService。
    
        パブリック文字列uploadFile(MultipartFileファイル、文字列型)がスローIOExceptionが、例外:InvalidKeyException、持つNoSuchAlgorithmException、InsufficientDataException、InvalidArgumentException、InternalException、NoResponseException、InvalidBucketNameException、XmlPullParserException、ErrorResponseException、ParameterException { 
            文字列fileUrlと、
            MinioClient minioClient = minioService.getMinioClient()。
            バイト [] =含むFileContent file.getBytes()。
            バイト [] encodeBase64 =org.apache.commons.codec.binary.Base64.encodeBase64(含むFileContent)。
            文字列base64Encode = 新しい文字列(encodeBase64、 "UTF-8" ); 
    
            ストリングoriginalFilename = file.getOriginalFilename()。
            文字列のcontentType = minioService.getContentType(originalFilename)。
            文字列のサフィックス = UploadUtil.getFileSuffix(originalFilename)。
    
            ストリングUUID = CommonUtil.getUUID()。
            もし(!UploadUtil.isFileTypeSupport(接尾辞)){
                 スロー 新しい ParameterExceptionを( "ファイルの種類がサポートではありません" ); 
            }
            ストリングcurrentDay = CommonUtil.getCurrentDayStr()。
    
            文字列fileNameに =タイプ+ "/" + currentDay + "/" + UUID + "" + 接尾辞; 
    
            log.info( "------------------アップロードの前に" ); 
    
            InputStream InputStreamは = 新しいれるByteArrayInputStream(base64Encode.getBytes()); 
            minioClient.putObject(MinioType.BUCKET_RIOファイル名値、INPUTSTREAM、のcontentType)。
            (log.info "アップロード----------------" ); 
            fileUrl = "/" + MinioType.BUCKET_RIO + "/" + ファイル名;
            返すfileUrlを。
        } 
    
    
        パブリック応答downloadFile(DownLoadBean豆){ 
            MinioClient minioClient = minioService.getMinioClient()。
            InputStream = nullを
            文字列fileStr = nullを
            文字列のobjectName = "" ;
            試す{ 
                文字列[] minioInfo = bean.getFileUrl()スプリット( "/"、-1 );
                もし(minioInfo.length == 4 ){ 
                    objectNameの = minioInfo [2] + "/" + minioInfo [3 ]。
                } { 
                    objectNameの= minioInfo [2] + "/" + minioInfo [3] + "/" + minioInfo [4 ]。
                }  = minioClient.getObject(minioInfo [1 ]、objectNameの); 
                アウトByteArrayOutputStream = 新しいByteArrayOutputStream();
                int型私= 0 ;
                一方、(!(iはin.read =())= -1 ){ 
                    out.write(I)。
                } 
                fileStr = out.toString()。
            } キャッチ(例外e){ 
                log.error(e.getMessage()、E)。
            } 最後に{ 
                CloseableUtils.closeQuietly(IN)
            } 
            戻りResponse.success(fileStr)を、
        } 
    
    }
    コードの表示

     

  • あなたはこのクラスを使用して、テンポラリ・テーブルにアップロードする必要がある場合は、それが汚れている場合、あなたはクリーンアップするために、次の定期的なタスクを使用することができ、データminioサーバーを追跡キャッチすることができます
    @Service 
    @ SLF4J 
    @Transactional(rollbackFor =例外クラスパブリック クラスPicTempService { 
    
        @Autowired 
        MinioService minioService。
    
        @Autowired 
        プライベートPicTempDao tempDao。
    
        パブリック文字列uploadPic(MultipartFileファイル、文字列型)がスローIOExceptionが、例外:InvalidKeyException、持つNoSuchAlgorithmException、InsufficientDataException、InvalidArgumentException、InternalException、NoResponseException、InvalidBucketNameException、XmlPullParserException、ErrorResponseException、ParameterException { 
            文字列IMAGEURLと、
            文字列UUID =  CommonUtil.getUUID()。
            MinioClient minioClient= minioService.getMinioClient()。
            入力ストリームは、 = )(file.getInputStream。
            ストリングoriginalFilename = file.getOriginalFilename()。
            文字列のcontentType = minioService.getContentType(originalFilename)。
            文字列のサフィックス = UploadUtil.getFileSuffix(originalFilename)。
            もし(!UploadUtil.isPicTypeSupport(接尾辞)){
                 スロー 新しい ParameterExceptionを( "PICタイプがサポートではありません" ); 
            } 
            文字列currentDay = TimeUtils.getCurrentDayStr()。
    
            文字列fileNameに tempDao.getPicByUuid(pic.getUuid())。= currentDay + "/" + UUID + "" + 接尾辞; 
            minioClient.putObject(タイプ、ファイル名、である、のcontentType)。
            IMAGEURL = "/" +タイプ+ "/" + ファイル名; 
            PicParamsのparam = 新しいPicParams(); 
            param.setUrl(IMAGEURL)。
            param.setUuid(UUID)。
            tempDao.insertPicTmp(PARAM)。
            返すUUID; 
        } 
    
        公共 ボイド initUrlAndDelTempPic(BasePicContent PIC)をスロー例外{
             試みを{ 
                PicTempのTEMP = 
                pic.setUrl(temp.getUrl())。
                tempDao.deleteTempPicByUuid(pic.getUuid()); 
            } キャッチ(例外E){ 
                log.error(e.getMessage()、E); 
                スロー 新しい新 ParameterException( "ピクチャパラメータ悪いです!" ); 
            } 
        } 
    
    
    
    }
    コードの表示

     

  • タスクのタイミングは、一時的なMinioの汚れたデータを削除します
    @Component 
    @ SLF4J 
    パブリック クラスTempFileScheduler { 
    
        @Autowired 
        プライベートPicTempDao tempDao。
    
        @Autowired 
        プライベートMinioService minioService。
    
        @Scheduled(クーロン = "0 0/30 * * *?" 公共 無効deleteTempPic(){
             試み{ 
                log.info(「ジョブを開始deleteTempPic################# @ ################」); 
                一覧 <PicTemp> picTempList = tempDao.getTmpPicDaysBefore( "3" 、TimeUtils.DAY)。
                MinioClient minioClient = minioService.getMinioClient()。
                (PicTemp picTemp:picTempList){ 
                    tempDao.deletePicTempById(picTemp.getId())。
                    MinioFile minioFile = minioService.getBucketFromUrl(picTemp.getUrl())。
                    minioClient.removeObject(minioFile.getBucket()、minioFile.getFileName())。
                } 
                log.info( "#################端ジョブdeleteTempPic ################ @" )。
            } キャッチ(例外e){ 
                log.error( "deleteTempPic" 、E)。
            } 
        } 
    }
    コードの表示

     

 

おすすめ

転載: www.cnblogs.com/xifenglou/p/12191139.html