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일에 작성됨
    리눅스 서버 개발자 입니다.

조회수 168


Banner summercoding 2x copy mjjdfw

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

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