Spring Boot 에서 PUT 으로 넘어온 form-data 의 이미지 파일을 저장하려고 합니다.
조회수 1444회
안녕하세요.
이번에 Python Flask 로 만들어진 ReatAPI 서버를 Spring Boot 로 컨버팅 하는 작업을 진행하고 있습니다. (기존에 동작중인 서비스이기 때문에 기존 구현 로직에 맞추어야 한다는 조건이 있습니다.)
관련해서, PUT 요청의 multipart/form-data 이미지를 처리 하려고 하는데, Spring 에서 지원하는 MultipartFile 로는 처리 할 수가 없습니다. (POST 요청만이 form-data 를 처리할 수 있다고 합니다.)
그래서, HttpServletRequest 의 InputStream 에서 rowdata 를 추출하여, 처리 하려고 합니다.
그런데 문제가, 파일 데이터가 아닌 일반 문자열 데이터는 파싱을 통해 구할수 있는데, 파일 바이너리 데이터는 어떻게 처리를 해야 할지 모르겠습니다.
String 으로 변환 시, 데이터 변형이 이루어 지는 듯 하여 파일에 쓰더라도 정상적인 이미지 파일이 아니고, 용량 또한 늘어나 저장이 됩니다.
byte 형태로는 데이터 파싱을 할 수 없어서... (form-data 에 파일과 텍스트가 함께 넘어옵니다.)
혹, 위와 같은 경우, 이미지 파일을 처리 하는 방법을 아시는 분은 조언 부탁 드립니다.
아래는 제가 작성한 소스의 일부 입니다.
HttpServletRequest req ...;
InputStream inputStream = req.getInputStream();
int nRead; byte[] data = new byte[1024];
while((nRead = inputStream.read(data, 0, data.length)) != -1) { buffer.write(data, 0, nRead); }
String body = new String(buffer.toByteArray());
/* 파싱 작업 진행 */
final String[] tmpArgs = bodyList[ii].split("\r\n\r\n");
FileOutputStream imageOutFile = new FileOutputStream("/Users/test/Downloads/temp/test.jpg");
imageOutFile.write(tmpArgs[1].getBytes());
imageOutFile.close();
그럼 오늘도 좋은 하루 되세요.
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력