-
JAVA BufferedImage to MultipartFileJava 2022. 4. 12. 17:34반응형
multipart/form-data로 이미지 파일을 전송하기 위해서는 스프링에서 제공하는 MultipartFile 클래스를 사용하면 된다. 이미 이미지를 BufferedImage로 load한 후 MultipartFile로 변환하려면 일반적인 방법을 사용할 수 없다.
파일 -> MultipartFile
https://oingdaddy.tistory.com/278
Java에서 File to MultipartFile , MultipartFile to File 변환하기
File과 관련된 백엔드단 테스트가 필요한 경우가 종종 있다. File을 MultipartFile 형식으로 바꾸어서 처리를 해줘야 하는 경우가 있는데 어떻게 해야 하는지 난감하다. 그럴때는 아래와 같은 로직을
oingdaddy.tistory.com
BufferedImage -> MultipartFile
import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.IOException; import java.io.InputStream; public class CustomMultipartFile implements MultipartFile { private final byte[] bytes; String name; String originalFilename; String contentType; boolean isEmpty; long size; public CustomMultipartFile(byte[] bytes, String name, String originalFilename, String contentType, long size) { this.bytes = bytes; this.name = name; this.originalFilename = originalFilename; this.contentType = contentType; this.size = size; this.isEmpty = false; } @Override public String getName() { return name; } @Override public String getOriginalFilename() { return originalFilename; } @Override public String getContentType() { return contentType; } @Override public boolean isEmpty() { return isEmpty; } @Override public long getSize() { return size; } @Override public byte[] getBytes() throws IOException { return bytes; } @Override public InputStream getInputStream() { return null; } @Override public void transferTo(File dest) throws IllegalStateException { } }
BufferedImage를 MultipartFile로 바꾸기 위해서는 MultipartFile 인터페이스를 implements해 구현체를 만들어줘야한다.
private MultipartFile convertBufferedImageToMultipartFile(BufferedImage image) { ByteArrayOutputStream out = new ByteArrayOutputStream(); try { ImageIO.write(image, "jpeg", out); } catch (IOException e) { log.error("IO Error", e); return null; } byte[] bytes = out.toByteArray(); return new CustomMultipartFile(bytes, "image", "image.jpeg", "jpeg", bytes.length); }
이후 생성자를 이용해 CustomMultipartFile을 생성해주면 된다.
반응형'Java' 카테고리의 다른 글
Feign POST 파일 전송 (multipart/form-data) (0) 2022.04.12 Feign POST application/x-www-form-urlencoded (0) 2022.04.12 Java 최대 너비 높이에 맞춰 resize하기 (0) 2022.04.12 Java 여러장의 이미지 세로로 merge 하기 (0) 2022.04.12 Proxy 통해 이미지 URL 다운로드 (0) 2022.04.12