http 요청 배경 에서 엑셀 파일 다운로드, 매번 두 번 다운로드
브 라 우 저 는 파일 형식 을 모 르 고 시간 초과 에 응답 하여 두 번 다운로드 합 니 다. 일부 브 라 우 저 는 요청 헤드 를 식별 하지 못 하기 때문에 첫 번 째 http 요청 은 시간 초과 로 인 정 됩 니 다. 이 어 다른 같은 요청 으로 넘 어가 두 번 의 파일 을 다운로드 합 니 다.
블 로 거들 이 주로 겪 는 Excel 파일 을 다운로드 할 때 겪 는 문제, 우선 nginx 설정 에 문제 가 있 는 지 확인
nginx 플러스 링크 시간 초과 설정 60s
proxy_connect_timeout 60;
proxy_read_timeout 60;
proxy_send_timeout 60;
2. 코드 에서 header 에서 contentType 형식 을 application / x - xls 로 변경 합 니 다.
요청 헤더 에 MediaType. APPLICATION 을 지정 하면OCTET_STREAM .*(바 이 너 리 흐름, 다운로드 파일 형식 을 모 름) 다운로드 파일 형식 변경
응용 프로그램 / x - xls 입 니 다.
@RequestMapping("exportCardPwd")
@Log(title = " ",action = " ")
public ResponseEntity exportCardPwd(HttpServletRequest request) throws IOException {
DBContextHolder.setDbType(DBContextHolder.DB_TYPE_R);
Long giftCardBatchId = null;
giftCardBatchId = Long.parseLong(request.getParameter("giftCardBatchId"));
List giftCards = giftService.getGiftCardListByBatchId(giftCardBatchId);
File excelFile = giftService.exportCardPwd(PathUtil.getExcelFilesSaveRootPath(request), giftCards);
HttpHeaders headers = new HttpHeaders();
String fileName = new String(PathUtil.getNewExcelFileName().getBytes("UTF-8"), "iso-8859-1");//
headers.setContentDispositionFormData("attachment", fileName);
// headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentType(MediaType.valueOf("application/x-xls"));
return new ResponseEntity(FileUtils.readFileToByteArray(excelFile), headers, HttpStatus.CREATED);
}
서로 다른 형식 에 서로 다른 ContentType 이 있 습 니 다. xls 문서 용 application / x - xls
이로써 매번 두 번 다운로드 요청 을 해결 했다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.