前台传入base64图片,java后台转为MultipartFile文件
package coml.utils; import org.apache.catalina.connector.Request; import org.springframework.web.multipart.MultipartFile; import sun.misc.BASE64Decoder; import javax.servlet.http.HttpServletRequest; import java.io.*; import java.util.UUID; /** * base64转为multipartFile工具类 * base64Convert */ 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 * * @param base64 * @return */ public static MultipartFile base64Convert(String base64) { String[] baseStrs = base64.split(","); BASE64Decoder decoder = new BASE64Decoder(); byte[] b = new byte[0]; try { b = decoder.decodeBuffer(baseStrs[1]); } catch (IOException e) { e.printStackTrace(); } for (int i = 0; i < b.length; ++i) { if (b[i] < 0) { b[i] += 256; } } return new Base64DecodeMultipartFile(b, baseStrs[0]); } public static void main(String[] args) throws IOException { /** * base64转为multipartFile */ MultipartFile file = base64Convert("data:video/mp4;base64,AAAAAAAA....==");//很长 if (file.isEmpty()) { System.out.println("没有上传文件"); } /** * 获取文件后缀 */ String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1) .toLowerCase(); /** * 重构文件名称 */ String pikId = UUID.randomUUID().toString().replaceAll("-", ""); String fileName = pikId + "." + fileExt; /** * 存储路径可在配置文件中指定 */ File filePath = new File("D:/temp/test/"); if (!filePath.exists()) { filePath.mkdirs(); } File fileLast = new File(filePath, fileName); /** * 指定好存储路径 * File file = new File(fileName); */ try { /** * 保存文件 * 使用此方法保存必须要绝对路径且文件夹必须已存在,否则报错 */ file.transferTo(fileLast); } catch (IOException e) { e.printStackTrace(); } } }
一辈子很短,努力的做好两件事就好;第一件事是热爱生活,好好的去爱身边的人;第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱。