Base64Encoderの問題解決とBase64Decoder

  • シーン:バックエンドコンテンツへのフロントbase64で画像の広がりは、BASE64Decoderによって絵がBase64でコードストリームに回すアップロードされ、アップロードが行われます。ジェンキンスを更新する場合、更新に失敗しました。
  • 質問:Javaバージョン9の後Base64EncoderとBase64Decoderを使用し続けることではありませんか?(sun.misc.Base64Encoderとsun.misc.Base64Decoderを使用することはできません)更新パッケージのジェンキンスを使用している場合BASE64Decoderパッケージを使用することはできませんか?
  • 理由:JDKは/lib/tool.jarと/lib/rt.jarにでJava SE 9から削除されて。
  • 変更前:
    輸入java.io.ByteArrayInputStream;
    インポートのjava.io.File;
    輸入java.io.FileOutputStreamは、
    インポートにjava.io.IOException;
    輸入java.io.InputStreamを。
    輸入org.springframework.web.multipart.MultipartFile;
    輸入sun.misc.BASE64Decoder;
    輸入sun.misc.BASE64Encoder;
    / ** 
     *图片上传工具类
     * / 
    パブリック クラス Base64で実装MultipartFile { 
    
        民間 最終 バイト[] imgContent。
        民間 最終的な文字列のヘッダ。
    
        公共のBase64(バイト[] imgContent、列ヘッダ){
             この .imgContent = imgContent。
            この .header = header.split( ";")[0 ]; 
        } 
    
        @Override 
        公共の文字列のgetName(){
             // TODO -実装は、要件によって異なり
            返すのSystem.currentTimeMillis()+ Math.random()+ "を。" + header.split( "/")[1 ]。
        } 
    
        @Override 
        公共の文字列getOriginalFilename(){
             // TODO -実装は、要件によって異なり
            返すのSystem.currentTimeMillis()+(INT)Math.random()* 10000 + "を。" + header.split( "/"]; 
        } 
    
        @Override 
        公共の文字列のgetContentType(){
             // TODO -実装が要件に依存
            返す header.splitを( ":")[1 ]; 
        } 
    
        @Override 
        パブリック ブールのisEmpty(){
             リターン imgContent == NULL || imgContent.length == 0 ; 
        } 
    
        @Override 
        パブリック ロングのgetSize(){
             戻りimgContent.length。
        } 
    
        @Override 
        公共 バイト [] GetBytesメソッド()スローにIOException {
             リターンimgContent; 
        } 
    
        @Override 
        公共の入力ストリームのgetInputStream()はスローにIOException {
             リターン 新しいするByteArrayInputStream(imgContent)を、
        } 
    
        @Override 
        公共 ボイド transferTo(ファイルDEST)はスローのIOExceptionは、IllegalStateException {
             新規たFileOutputStreamを(DEST).WRITE(imgContent)。
        } 
    
        / ** 
         *将图片Base64で码转成上传流
         * / 
        パブリック 静的MultipartFile base64ToMultipart(文字列のBASE64){
             試み{ 
                文字列[] baseStrs = base64.split( "" )。
    
                BASE64Decoderデコーダ = 新しいBASE64Decoder()。
                バイト [] B = 新しい バイト [0 ]。
                B = decoder.decodeBuffer(baseStrs [1 ])。
    
                以下のためにINT I 0 =; I <てb.length; ++ I){
                     場合(B [i]が<0 ){ 
                        B [I] + = 256 
                    } 
                } 
                戻り 新しい Base64で(B、baseStrs [0 ])。
            } キャッチ(IOExceptionを電子){ 
                e.printStackTrace(); 
                リターン はnull; 
            } 
        } 
    }
  • 変更後:
    輸入org.springframework.web.multipart.MultipartFile;
    輸入java.util.Base64;
    輸入java.util.Base64.Decoder;
    輸入 java.io. * ;
    / ** 
     *图片上传工具类
     * / 
    パブリック クラス Base64Util 実装MultipartFile { 
    
        民間 最終 バイト[] imgContent。
        民間 最終的な文字列のヘッダ。
    
        公共 Base64Util(バイト[] imgContent、列ヘッダ){
             この .imgContent = imgContent。
            この .header = header.split( ";")[0 ]; 
        }
    
        @Override 
        公共の文字列のgetName(){
             // TODO -実施要件に依存して
            返すのSystem.currentTimeMillis()+ Math.random()+ "を。" + header.split( "/")[1 ]。
        } 
    
        @Override 
        公共の文字列getOriginalFilename(){
             // TODO -実装は、要件によって異なり
            返すのSystem.currentTimeMillis()+(INT)Math.random()* 10000 + "を。" + header.split( "/")[1 ]。
        } 
    
        @Override 
        公共の文字列のgetContentType(){
             // TODO -実装は、要件の依存する
            リターンheader.split( ":")[1 ]。
        } 
    
        @Override 
        パブリック ブールのisEmpty(){
             リターン imgContent == NULL || imgContent.length == 0 ; 
        } 
    
        @Override 
        パブリック ロングのgetSize(){
             戻りimgContent.length。
        } 
    
        @Override 
        公共 バイト [] GetBytesメソッド()はスローのIOException {
             戻りimgContentと、
        } 
    
        @Override 
        公共のInputStreamのgetInputStream()はスローにIOException {
             戻り 新たにれるByteArrayInputStream(imgContent)。
        } 
    
        @Override 
        公共 ボイド transferTo(ファイルDEST)はスローのIOExceptionは、IllegalStateException {
             新規たFileOutputStreamを(DEST).WRITE(imgContent)。
        } 
    
        / ** 
         *将图片Base64で码转成上传流
         * / 
        パブリック 静的MultipartFile base64ToMultipart(文字列のBASE64){ 
            文字列[] baseStrs = base64.split( "" )。
            ストリングimgBase64 = base64.replaceAll( "データ:画像/ PNG、BASE64、"、 "" ); 
            デコーダデコーダ = Base64.getDecoder()。
            バイト []結果=decoder.decode(imgBase64)。
            リターン 新しい Base64Util(その結果、baseStrs [0 ])。
        } 
    }
  • 参考:https://blog.csdn.net/xie_sining/article/details/80777164

おすすめ

転載: www.cnblogs.com/LJing21/p/12156142.html