Самый надежный способ передачи больших файлов на удаленный сервер через Java? - PullRequest
4 голосов
/ 16 февраля 2011

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

Сейчас я склоняюсь к использованию пакета Apache Commons Net (см .: http://commons.apache.org/net/) вместе с FTP для перемещения файлов с клиентского компьютера на сервер. Там я буду использовать безопасные вызовы API, чтобы переместить файлы туда, куда им нужно.

Это лучший маршрут? Есть ли лучший способ надежной передачи больших (1 ГБ +) файлов? Есть ли способ возобновить прерванную загрузку с использованием этой методологии? Я бы хотел избежать традиционных запросов HTTP POST, поскольку они ненадежны и не могут возобновить прерванную загрузку.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 17 февраля 2011

Вы не упомянули, является ли использование Amazon S3 вариантом для вашего решения, но они предлагают встроенную поддержку частичной загрузки. Основной рабочий процесс:

  1. Создайте заменитель загрузки и удерживайте нажатой клавишу ответа
  2. Загрузка фрагментов - может быть одновременной и повторяться при необходимости
  3. Используйте ключ ответа, чтобы объединить куски в один файл

Их SDK предлагает встроенную функцию нарезки файлов и загрузки фрагментов.

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

0 голосов
/ 16 февраля 2011

Ваше понимание сообщения HTTP не совсем верно.Стандарт HTTP не ограничивает запросы диапазона только методом GET - их также можно использовать с POST или PUT.

Кроме того, если у вас есть контроль над клиентским и серверным сценарием, вы можете разместить как блок данных, так и позицию StartAt в качестве отдельного параметра.На сервере вы проверяете параметр и добавляете полученные данные в указанную позицию.

...