Spring Boot 에서 PUT 으로 넘어온 form-data 의 이미지 파일을 저장하려고 합니다.


안녕하세요.

이번에 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();

그럼 오늘도 좋은 하루 되세요.

  • 2017년 01월 11일에 작성됨
    리눅스 서버 개발자 입니다.

조회수 317


로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close