Я создал приложение Java для хранения и загрузки больших файлов, поэтому, когда клиент загружает файл, он будет передан на сервер, который отправит его в облачную службу хранилища (хранилище озера данных лазурного цвета), однако, когда пользователь пытается загрузить файл запрос отправляется на сервер, затем сервер отправит запрос в службу хранения, и передача файла начнется между сервером и службой хранения, в то время как клиент будет ждать завершения передачи между этими двумя, и это может занять много времени (шаг 3 на изображении ниже). Мне интересно, есть ли способ одновременно загрузить то, что уже было собрано из лазурного?
Вот мой код:
@RequestMapping(value = "download", method = RequestMethod.GET, produces = "application/zip")
public ResponseEntity < Resource > download(@PathVariable String path) throws IOException {
InputStream stream = azureDataLakeStoreService.getFile(path);
InputStreamResource resource = new InputStreamResource(stream);
return ResponseEntity.ok()
.header(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, HttpHeaders.CONTENT_DISPOSITION)
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=download.zip")
.contentType(MediaType.parseMediaType("application/octet-stream"))
.body(resource);
}
То, что вы используете, должно работать. Я только что убедился, что обслуживает файл с локального диска. Не могли бы вы поделиться тем, что происходит в методе getFile? Думаю, тут может быть какая-то проблема.




Это помогает: stackoverflow.com/questions/29637151/…? (Я предполагаю, что вам нужен такой потоковый вывод, а затем вы просто передаете байты, поступающие с вашего сервера хранения, сразу на клиент)