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() + "." + header.split("/")[1];
}
@Override
public String getOriginalFilename() {
return System.currentTimeMillis() + "." + 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 void udfForwardUpload(String base64Img) {
MultipartFile image = null;
StringBuilder base64 = new StringBuilder();
if (!"".equals(base64Img)) {
base64.append(base64Img);
String[] baseStrs = base64.toString().split(",");
BASE64Decoder decoder = new BASE64Decoder();
byte[] imageByte = new byte[0];
try {
imageByte = decoder.decodeBuffer(baseStrs[1]);
} catch (IOException e) {
e.printStackTrace();
}
for (int j = 0; j < imageByte.length; ++j) {
if (imageByte[j] < 0) {
imageByte[j] += 256;
}
}
image = new BASE64DecodeMultipartFile(imageByte, baseStrs[0]);
String fileName = image.getOriginalFilename();
File dest = new File(new File("F:\\test").getAbsolutePath()+ "/" + fileName);
if (!dest.getParentFile().exists()) {
dest.getParentFile().mkdirs();
}
try {
image.transferTo(dest);
} catch (Exception e) {
e.printStackTrace();
}
}
}