Мой вопрос, если / как я могу передать OutputStream объекту ответа в Jax-rs. Вот мое (немного неструктурированное) описание моей текущей настройки:
У меня есть служба REST на основе Java (основанная на расширенной реализации Java Jax-rs). Доступ к API осуществляется через веб-браузер, и в бэкэнде есть какая-то служба, которая генерирует OutputStream . Результат этого OutputStream предлагается в виде загрузки файла. Для передачи данных из OutputStream в браузер я сохраняю выходные данные OutputStream в файловой системе, а затем использую ResponsBuilder и StreamingOutput для передачи данных в браузер. / пользователь. Создание файла - это то, чего я хочу избежать (на самом деле без особой причины - я просто думаю, что лучше избегать создания файла ...). Вот код, который передает созданный файл в построитель ответов и впоследствии удаляет его:
// <SNIP>
StreamingOutput fileStream = new StreamingOutput() {
@Override
public void write(OutputStream output) throws IOException, WebApplicationException {
try {
Files.copy(exportedFile.toPath(), output);
} catch (NoSuchFileException e) {
logger.error("An exception (NoSuchFile) occured. MESSAGE=" + e.getMessage());
}
finally {
Files.delete(exportedFile.toPath());
}
}
};
response = Response.ok( fileStream , MediaType.APPLICATION_OCTET_STREAM )
.header("content-disposition","attachment; filename = download.dat"))
.build();
return response;
// <SNIP>