본문 바로가기
springBoot

JAVA 한글명 파일 다운 안됨

by 뇽꾸리 2024. 10. 16.
반응형

이렇게하면됨 



@PostMapping("/짜증나네진짜")
public ResponseEntity<?> download(@RequestBody List<Long> list, HttpServletResponse response) {
    try {
        List<?> list = service.list();
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("sheet1");

        // 파일로 저장하지 않고 직접 ByteArray로 응답
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        workbook.write(out);
        workbook.close();

        // 한글 파일명 설정 (ISO-8859-1로 변환)
        String fileName = "짜증나네진짜.xlsx";
        String encodedFileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");

        // HTTP 응답 헤더 설정
        response.setContentType("ms-vnd/excel");
        response.setHeader("Content-Disposition", "attachment; filename=\"" + encodedFileName + "\"");
        response.setHeader("Content-Transfer-Encoding", "binary");

        // 파일 전송
        return ResponseEntity.ok()
                .body(out.toByteArray());
    } catch (Exception e) {
        log.error("Failed to generate Excel file", e);
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("fail");
    }
}
반응형

댓글