REST API для загрузки файлов большого размера в JAVA 8 без превышения времени ожидания ⇐ JAVA
-
Гость
REST API для загрузки файлов большого размера в JAVA 8 без превышения времени ожидания
У меня есть клиентские и серверные приложения, сеанс которых рассчитан на длительность сеанса не более 30 секунд.
Я пишу rest API для загрузки отчетов, которые иногда содержат очень большой объем данных, но время ожидания истекает. Есть ли лучший способ сделать это, чтобы не превышать лимит времени в 30 секунд?
Вот контроллер на стороне сервера:
@GetMapping("/download") общественный недействительный downloadReport() { List люди = getPeople(); // логика получения данных response.addHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + fileName); ответ.addHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE); for (Строка person: люди) { StreamUtils.copy(new ByteArrayInputStream(person.concat("\n").getBytes(StandardCharsets.UTF_8)), ответ.getOutputStream()); } ответ.flushBuffer(); } Вот код на стороне клиента:
@GetMapping("/download") public void downloadReport(@RequestParam MultiValueMap downloadRequest, ответ HttpServletResponse) выдает исключение { ResponseEntity result = restClient.downloadReport(URI, downloadRequest); если (result.getStatusCode().equals(HttpStatus.OK)) { Строка fileName = result.getHeaders().getContentDisposition().getFilename(); response.addHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + fileName); response.addHeader("Content-Type", "application/octet-stream"); StreamUtils.copy(result.getBody(), response.getOutputStream()); ответ.flushBuffer(); } еще { выдать новое исключение («Не удалось загрузить отчет.»); } } Любые советы приветствуются.
У меня есть клиентские и серверные приложения, сеанс которых рассчитан на длительность сеанса не более 30 секунд.
Я пишу rest API для загрузки отчетов, которые иногда содержат очень большой объем данных, но время ожидания истекает. Есть ли лучший способ сделать это, чтобы не превышать лимит времени в 30 секунд?
Вот контроллер на стороне сервера:
@GetMapping("/download") общественный недействительный downloadReport() { List люди = getPeople(); // логика получения данных response.addHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + fileName); ответ.addHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE); for (Строка person: люди) { StreamUtils.copy(new ByteArrayInputStream(person.concat("\n").getBytes(StandardCharsets.UTF_8)), ответ.getOutputStream()); } ответ.flushBuffer(); } Вот код на стороне клиента:
@GetMapping("/download") public void downloadReport(@RequestParam MultiValueMap downloadRequest, ответ HttpServletResponse) выдает исключение { ResponseEntity result = restClient.downloadReport(URI, downloadRequest); если (result.getStatusCode().equals(HttpStatus.OK)) { Строка fileName = result.getHeaders().getContentDisposition().getFilename(); response.addHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + fileName); response.addHeader("Content-Type", "application/octet-stream"); StreamUtils.copy(result.getBody(), response.getOutputStream()); ответ.flushBuffer(); } еще { выдать новое исключение («Не удалось загрузить отчет.»); } } Любые советы приветствуются.
Мобильная версия