赞
踩
base64 文件格式是: 文件头+分号+文件体,例如:data:image/png;base64,VBORw0KGgoAAAANSUhEUgAAAFgAAABtCAYAAAAlIqYqAAAACXBIWX
import org.springframework.web.multipart.MultipartFile; import sun.misc.BASE64Decoder; import java.io.*; /** * base64 转 MultipartFile */ public class Base64DecodedMultipartFile implements MultipartFile { private final byte[] imgContent; private final String header; public Base64DecodedMultipartFile(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); } public static MultipartFile base64ToMultipart(String base64) { try { String[] baseStr = base64.split(","); BASE64Decoder decoder = new BASE64Decoder(); byte[] b = new byte[0]; b = decoder.decodeBuffer(baseStr[1]); for (int i = 0; i < b.length; ++i) { if (b[i] < 0) { b[i] += 256; } } return new Base64DecodedMultipartFile(b, baseStr[0]); } catch (IOException e) { e.printStackTrace(); return null; } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。