여러 사진을 getmapping으로 보여줘야 할 상황이 필요했는데
리스트로 josn 형태로 base64로 인코딩한 이미지들을 넣어주는 방식으로 보내줬다.
Message message = new Message();
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(new MediaType("application","json", Charset.forName("UTF-8")));
try {
List<RecordFileDto> fileDto = recordImgService.getFileDayList(memberId, date);
if (fileDto == null) {
System.out.println(">>>fileDto null");
return new ResponseEntity<String>("null", HttpStatus.OK);
}
System.out.println(">>>>"+fileDto.size());
System.out.println(">>>>"+fileDto.get(0).getFileName());
String[] imageString = new String[fileDto.size()];
List<String> result = new ArrayList<>();
for (int i = 0; i < fileDto.size(); i++) {
InputStream inputStream = null;
ByteArrayOutputStream byteArrayOutputStream = null;
try {
File file = new File(fileDto.get(i).getFileUrl());
if (file.exists()) {
System.out.println(">>file exists");
inputStream = new FileInputStream(file);
byteArrayOutputStream = new ByteArrayOutputStream();
int len = 0;
byte[] buf = new byte[1024];
while ((len = inputStream.read(buf)) != -1) {
byteArrayOutputStream.write(buf, 0, len);
}
byte[] fileArray = byteArrayOutputStream.toByteArray();
imageString[i] = new String(Base64.encodeBase64(fileArray));
String changeString = "data:image/png;base64," + imageString[i];
result.add(changeString);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
inputStream.close();
byteArrayOutputStream.close();
}
}
message.setStatus(StatusEnum.OK);
message.setMessage("사진리스트 조회 성공");
message.setData(result);
return new ResponseEntity<>(message,httpHeaders,HttpStatus.OK);
fileDto 에 사진에 대한 정보를 가진 배열.
imageString[] 은 추후에 이미지에 대해 인코딩한 것들을 담아줄 배열.
result는 최종적으로 보낼 이미지 인코딩한 정보의 배열.
잘 인코딩되었는지 확인하는 방법은
postman에서 결과값이 잘 나오는지 확인 후 그 imageString에 해당하는 부분을 복사하여
아래의 사이트에 붙여넣어 확인하면 된다.
이와같이 원래 넣었던 이미지가 다시 디코딩되어 잘 나오는 것을 확인하면 끝!
https://ko.rakko.tools/tools/71/
나는 이 사이트를 활용했는데 base64이미지 디코터를 검색하면 많은 사이트가 나오니 원하는 사이트에서 하면 된다.
참고 :
https://zzznara2.tistory.com/442
'공부' 카테고리의 다른 글
[JPA/JPQL] Update/delete queries cannot be typed 해결 (0) | 2022.08.05 |
---|---|
[스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 2장 TEST 코드 (0) | 2022.06.22 |
[IntelliJ]No tests found for given includes: 오류 해결법 (0) | 2022.06.21 |
인텔리제이 빨간줄 alt+Enter로 import해서 없애기.. (0) | 2022.06.21 |
[스프링 부트와 AWS로 혼자 구현하는 웹 서비스]build.gradle 오류 해결. gradle 반영 reload하기_윈도우 (1) | 2022.06.21 |
댓글