- シーン:バックエンドコンテンツへのフロント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
Base64Encoderの問題解決とBase64Decoder
おすすめ
転載: www.cnblogs.com/LJing21/p/12156142.html
おすすめ
ランキング