Возврат файла с использованием Java Jersey - PullRequest
21 голосов
/ 10 октября 2010

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

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

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

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

Ответы [ 4 ]

8 голосов
/ 10 октября 2010

Решил проблему, используя ответ из Входные и выходные двоичные потоки, используя JERSEY?

7 голосов
/ 18 мая 2012

Как насчет

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

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

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

0 голосов
/ 10 октября 2010

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

проверьте здесь:

0 голосов
/ 10 октября 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...