Скачивание файла Андроид
Пытаюсь реализовать скачивание файла с сервера Spring Boot на Андроид. Почему то скачивается только 146 байт. Я так подозреваю, что поток отдает первые байты, я их записываю и все. В чем может быть проблема и как ее исправить?
Вот код метода скачивания
private fun callbackForFile(id: Int, name: String) {
GlobalScope.launch {
var fout: FileOutputStream? = null
try {
fout = FileOutputStream("${Environment.getExternalStoragePublicDirectory(DIRECTORY_DOWNLOADS)!!.path}/$name")
fout.write(Http.get("/dialogue/getFile/$id").body!!.source().readByteArray())
showToast("Файл сохранен на устройство")
} catch (e: SocketTimeoutException) {
showToast("Возникла ошибка при скачивании")
} catch (e: ConnectException) {
showToast("Возникла ошибка при скачивании")
} catch (e: SocketException) {
showToast("Возникла ошибка при скачивании")
} finally {
fout?.close()
}
}
}
Вот код сервера
@GetMapping("getFile")
public StreamingResponseBody getFile(@RequestParam("id") String id,
HttpServletResponse response) {
try {
response.addIntHeader("dialogue_messages", Integer.parseInt(id));
File dir = new File("D:\\dialogue_messages\\" + id + "\\");
File[] arrFiles = dir.listFiles();
FileInputStream inputStream = new FileInputStream("D:\\dialogue_messages\\" + id + "\\" + arrFiles[0].getName());
return outputStream -> {
int b;
while ((b = inputStream.read()) != -1) {
outputStream.write(b);
}
inputStream.close();
};
} catch (FileNotFoundException | NullPointerException ignored) {
}
return null;
}