Подтвердить что ты не робот

Вернуть файл, используя Java Jersey

Я использую Java-Джерси для реализации службы REST. Одна вещь, которую должен предоставить мой сервис, - это вариант загрузки файлов. Эти файлы довольно большие и построены из данных из db.

В настоящее время я извлекаю все данные из db и сохраняю их в файл и возвращая

Response.ok().entity(new FileInputStream(file)).build();

Есть ли способ, как я могу начать обслуживать файл без полной загрузки данных из db, но поскольку данные поступают из db, добавьте его в выходной поток?

4b9b3361

Ответ 2

Как насчет

File fileToSend = getFile();
return Response.ok(fileToSend, "application/zip").build();

Тип носителя может быть установлен в соответствии с отправляемым файлом.

Это выглядит довольно прямолинейно, но что более важно, читают ли эксперты java это проблема производительности с решением?

Ответ 3

Итак, вы хотите получить поток из своей базы данных?

Я не уверен, что это возможно.

Но вам не нужно писать временный файл для отправки ваших данных. Вместо того, чтобы записывать в файл, вы можете использовать ByteArrayInputStream и помещать свои данные там с байтовым массивом.

Ответ 4

зависит от типа базового соединения/драйвера базы данных, если у вас есть доступ к уровню JDBC (например, с использованием Hibernate), должно быть возможно передавать данные с использованием JDBC-потокового API, затем принимать потоки из ResultSet и передавать их в Jersey Response Builder. Я не сделал этого сам, хотя..

здесь: