Я пишу REST API в серверном приложении, которое позволит удаленному клиентскому приложению передавать большие файлы сервер-клиент.Файлы, которые будут отправлены на 1-5 ГБКроме того, он должен быть устойчивым к плохой передаче и соединению.Я написал сервис, который читает файл и отправляет его клиенту.Для небольших файлов проблем нет, оно отправлено.Проблема появилась уже при файле около 100мб, потому что я не получил ответ по http.Я пытался читать фрагментированные файлы и отправлять только фрагменты, чтобы клиентское приложение позже использовалось полностью, но возникает проблема чрезмерного использования памяти.Как передать файл без загрузки его в память приложения?
FileInputStream inputStream = new FileInputStream(file2download);
response.setContentType(URLConnection.guessContentTypeFromName(file2download.getName()));
response.setContentLength((int) file2download.length());
String headerValue = String.format("attachment; filename=\"%s\"", file2download.getName());
response.setHeader("Content-Disposition", headerValue);
OutputStream outStream = response.getOutputStream();
byte[] buffer = new byte[BUFFER_SIZE];
int bytesRead = -1; // czytamy w pętli po fragmencie, który następnie przepisujemy do strumienia wyjściowego
while ((bytesRead = inputStream.read(buffer)) != -1) {
outStream.write(buffer, 0, bytesRead);
}
inputStream.close();
outStream.close();