码上敲享录 > java入门知识分享 > base64字符串转MultipartFile

base64字符串转MultipartFile

上一章章节目录下一章 2021-07-05已有2134人阅读 评论(0)

base64字符串转MultipartFile


解决方法:

1、MultipartFile file=Base64DecodeMultipartFile.base64Convert(facebase);

其中facebase是base64字符串


2、Base64DecodeMultipartFile的源码如下:

import org.springframework.web.multipart.MultipartFile;

import sun.misc.BASE64Decoder;

import java.io.*;

public class Base64DecodeMultipartFile implements MultipartFile {


   private final byte[] imgContent;

   private final String header;


   public Base64DecodeMultipartFile(byte[] imgContent, String header) {

       this.imgContent = imgContent;

       this.header = header.split(";")[0];

   }


   @Override

   public String getName() {

       return System.currentTimeMillis() + Math.random() + "." + header.split("/")[1];

   }


   @Override

   public String getOriginalFilename() {

       return System.currentTimeMillis() + (int)Math.random() * 10000 + "." + header.split("/")[1];

   }


   @Override

   public String getContentType() {

       return header.split(":")[1];

   }


   @Override

   public boolean isEmpty() {

       return imgContent == null || imgContent.length == 0;

   }


   @Override

   public long getSize() {

       return imgContent.length;

   }


   @Override

   public byte[] getBytes() throws IOException {

       return imgContent;

   }


   @Override

   public InputStream getInputStream() throws IOException {

       return new ByteArrayInputStream(imgContent);

   }


   @Override

   public void transferTo(File dest) throws IOException, IllegalStateException {

       new FileOutputStream(dest).write(imgContent);

   }


/**

 * base64转multipartFile

 */

   public static MultipartFile base64Convert(String base64) {

       String head = "data:image/jpeg;base64";

       //String[] baseStrs = base64.split(",");

       BASE64Decoder decoder = new BASE64Decoder();

       byte[] b = new byte[0];

       try {

           b = decoder.decodeBuffer(base64);

       } catch (IOException e) {

           e.printStackTrace();

       }

       for (int i = 0; i < b.length; ++i) {

           if (b[i] < 0) {

               b[i] += 256;

           }

       }

       return new Base64DecodeMultipartFile(b, head);

   }

}



向大家推荐《Activiti工作流实战教程》:https://xiaozhuanlan.com/activiti
0

有建议,请留言!

  • *您的姓名:

  • *所在城市:

  • *您的联系电话:

    *您的QQ:

  • 咨询问题:

  • 提 交