Как создать загрузочный (большой, т.е. ~ 400 МБ) сервис bytestream в Vaadin? - PullRequest
0 голосов
/ 02 января 2019

В более раннем сообщении, опубликованном несколько минут назад, я задал «общий» вопрос о создании общих веб-сервисов в vaadin: Как можно создавать веб-сервисы в Vaadin 12?

Однако,один конкретный уникальный случай, который мне в основном нужно поддерживать, - это загрузка через https больших (например, ~ 400 МБ) объектов потока байтов, которые, вероятно, будут отправлены в Vaadin с помощью команды "post" https (с предоставлением выигрышной суммы, я предполагаю, что в необработанном двоичном формате)как поток данных.) Я увидел, что Vaadin имеет встроенную поддержку для загрузки файлов (я полагаю, что это, по сути, команда post для потока байтов), а затем я увидел ссылку на StreamReceiver здесь: https://vaadin.com/docs/v12/flow/advanced/tutorial-stream-resources.html

это похоже на импортер файлов, но я не смог найти (простых и более или менее полных) примеров того, как его использовать.В идеале, всего несколько быстрых строк Java, чтобы показать «получение» байтового потока, и несколько быстрых строк (в идеале в Java), которые «отправляют» в URL-адрес получающего потока, - это все, что нужно для того, чтобы показать, как может происходить загрузка байтов вручную.совершено в Ваадине.(В DropWizard & Jersey я могу найти такие примеры довольно легко, но я не уверен, как получить этот уровень контроля в Vaadin.)

(Очень очень незначительный бонус: есть ли ограничение на размеркоманда post? Например, можно ли отправлять и получать байтовый поток, скажем, ~ 4 ГБ?)

1 Ответ

0 голосов
/ 02 января 2019

В Vaadin API загрузки оптимизирован для потоковой передачи в файл (в отличие от обработки потока, как в Servlet и JAX-RS API). Один из способов - сначала выполнить потоковую передачу во временный файл, а затем, когда файл полностью находится на стороне сервера, обрабатывать данные из временного файла.

В качестве альтернативы вы можете использовать Flow Viritin add-on и вспомогательный класс UploadFileHandler, которые дают вам и API, где вы читаете содержимое из InputStream, так же, как с Servlet API. Смотрите пример использования в этот тест .

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

...