반응형
스프링 파일다운로드
- ResponseEntity<Response> 방식으로 다운로드 구현중
- No converter for [class org.springframework.core.io.FileSystemResource] with preset Content-Type 'application/octet-stream' 오류발생
try (ZipOutputStream zos = new ZipOutputStream(Files.newOutputStream(tempZipFile, StandardOpenOption.CREATE))) {
Files.walk(tempDir)
.filter(Files::isRegularFile)
.forEach(file -> {
try {
String originalFileName = file.getFileName().toString();
ZipEntry zipEntry = new ZipEntry(originalFileName);
zos.putNextEntry(zipEntry);
Files.copy(file, zos);
zos.closeEntry();
} catch (IOException e) {
throw new RuntimeException("파일 처리 중 오류 발생: " + file, e);
}
});
}
// 응답 헤더 설정
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + imgId + ".zip");
response.setContentLength((int) Files.size(tempZipFile));
// 파일 전송
Files.copy(tempZipFile, response.getOutputStream());
response.getOutputStream().flush();
// 임시 ZIP 파일 삭제
Files.deleteIfExists(tempZipFile);
코드는 문제 없는걸로 보이는데
저 시부레 컨텐트 타입이 오류나서 말썽이었음
해결방법
-> 콘텐츠 타입 옥텟 인식할 수 있게 수정함
아래 참고
dispatch-servlet.xml 에 아래 타입 추가하면 댐
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=UTF-8</value>
<value>application/octet-stream</value>
</list>
</property>
반응형
'Spring > Spring (Legacy)' 카테고리의 다른 글
[전자정부] @Transactional 설정하기 (xml) (0) | 2024.11.06 |
---|---|
[전자정부] RestController / ResponseBody 응답 404 일때 (0) | 2024.10.22 |
스프링 스케쥴링 사용법 (0) | 2024.08.19 |
마이바티스 result 로 vo 2개 설정하기 (0) | 2024.07.10 |
[전자정부 Egov] Swagger 적용방법(스프링 레거시) (1) | 2024.05.28 |