/** * TODO base64 上传图片工具 * @Title: Base64.java * @Package: com.ydc.manager.common.util * @author: jinwei * @date : 2019/02/14 0029 上午 11:37 */ public class UploadBase64Image { public static MultipartFile base64ToMultipart(String base64) { try { String[] baseStrs = base64.split(","); BASE64Decoder decoder = new BASE64Decoder(); byte[] b = new byte[0]; b = decoder.decodeBuffer(baseStrs[0]); for(int i = 0; i < b.length; ++i) { if (b[i] < 0) { b[i] += 256; } } return new BASE64DecodedMultipartFile(b, baseStrs[0]); } catch (IOException e) { e.printStackTrace(); return null; } } }
/** * TODO BASE64Decoded 图片处理工具 * @Title: BASE64DecodedMultipartFile.java * @Package: com.ydc.manager.common.util * @author: jinwei * @date : 2019/02/14 0029 上午 11:47 */ 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); } }
controller中使用
MultipartFile file = UploadBase64Image.base64ToMultipart(imageBase64); String f_prefix = DigestUtils.md5DigestAsHex(contractBillId.getBytes()); String e_prefix = file.hashCode()+RandomUtil.getRandom(20,RandomUtil.TYPE.LETTER_NUMBER)+".jpg"; String filename = f_prefix+File.separator+e_prefix; String directory = properties.getBillInvoiceUploadPath();//配置文件中配置的路径 String filepath = Paths.get(directory, filename).toString(); File dire = new File(directory+File.separator+f_prefix); if (!dire.exists()) { dire.mkdirs(); } String[] tempList = dire.list(); File temp = null; for(int i=0;i<tempList.length;i++){ if (directory.endsWith(File.separator)) { temp = new File(directory + tempList[i]); } else { temp = new File(directory + File.separator + tempList[i]); } if (temp.isFile()) { temp.delete(); } } file.transferTo(new File(filepath)); fileUrl = properties.getNewBillInvoicePathPrefix()+"/"+f_prefix+"/"+e_prefix;
下面是操作自己的业务逻辑即可