Запрос размера потока от потребителя, перед загрузкой всех данных - PullRequest
0 голосов
/ 21 ноября 2018

Hy all,
У меня проблема с компонентом верблюда, который я разрабатываю, и я не уверен, как реализовать его таким образом, который соответствует концепции верблюда.

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

В настоящее время производитель принимает только io.Files, nio.Paths и GenericFile, потому что там я могу прочитать размер файла, прежде чем загружать файл.
Конечно, это не очень хороший способ сделатьиз-за того, что (большой) файл должен быть доступен локально.
Подключение, например, к ftp-серверу в качестве потребителя может означать, что мне нужно загружать каждый файл локально, чтобы потом его можно было загрузить.

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

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

Приветсвует Крис

1 Ответ

0 голосов
/ 22 ноября 2018

Для потребителя файла / FTP обмен в заголовке имеет ключ CamelFileLength (Exchange.FILE_LENGTH), который возвращает размер файла на удаленном ftp-сервере из результата сканирования потребителя.

В отличие от размера файла, полученного изlocal, размер файла в ключе CamelFileLength может отличаться от фактического размера файла, полученного вашим приложением

  1. Режим ASCII потенциально изменит перевод строки, если ОС отличается
  2. Размер файламожет измениться между действием сканирования потребителей и действием выбора потребителейn
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...