아하
생활

생활꿀팁

하얀고슴도치236
하얀고슴도치236

java에서 base64 로 된 img를 MultipartFile 로 변경하려면 어떻게 해야 하나요???

java에서 base64 로 된 img를 MultipartFile 로 변경하려면 어떻게 해야 하나요???

base64 로 매우 큰 String 처럼 된것을 가지고 있습니다.

이를 자바에서 MultipartFile 로 변경해야되는데....어떻게 하는지 모르겠습니다.

base64 to MultipartFile 로 검색해도 적당한 자료가 나오질 않는 상황입니다.

55글자 더 채워주세요.
1개의 답변이 있어요!
  • 탈퇴한 사용자
    탈퇴한 사용자

    안녕하세요.

    Base64 로 된 string이 있다면 굳이 MultipartFile로 변경할 일은 거의 없습니다. base64 string MultipartFile로 변환하지 않더라도 작업이 다 가능하기 때문입니다.

    아래는 MultipartFile 객체로 변경 가능한 소스이며, 사용법은 아래와 같습니다.

    // 사용법 MultipartFile multipartFile = BASE64DecodedMultipartFile.base64ToMultipart(base64문자열);

    import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import org.springframework.web.multipart.MultipartFile; import sun.misc.BASE64Decoder; 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() { // TODO - implementation depends on your requirements return System.currentTimeMillis() + Math.random() + "." + header.split("/")[1]; } @Override public String getOriginalFilename() { // TODO - implementation depends on your requirements return System.currentTimeMillis() + (int) Math.random() * 10000 + "." + header.split("/")[1]; } @Override public String getContentType() { // TODO - implementation depends on your requirements 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[] baseStrs = base64.split(","); BASE64Decoder decoder = new BASE64Decoder(); byte[] b = new byte[0]; b = decoder.decodeBuffer(baseStrs[1]); 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; } } }