Загрузка больших файлов через REST API

185
23 июля 2018, 21:20

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

Загружаются файлы через REST API в три этапа:

  1. start-запрос начинает транзакцию (на самом деле транзакций еще нет), создает временный файл с временным ID, сохраняет мета-информацию о файле и возвращает временный ID
  2. append-запрос дописывает байты в конец файла. Вместе с байтами отправляется временный ID файла, к которому дописываем байты
  3. commit - перегоняет файл с диска в GridFS

Как это лучше реализовать? Я решил для всего использовать временный ID. При старт-запросе генерируется уникальный tempID и создается файл на диске, имя файла такое же как tempID. При append-запросе отправляется tempID. Обработчик получает tempID, открывает файл с таким именем на диске и дописывает к нему байты. Commit-запрос получает tempID в заголовке и перегоняет файл с таким именем с диска в монгу.

Можно ли реализовать это красивее и надежнее?

Как прикрутить к этому транзакции, чтобы если не произошел коммит, то мета-информация о файла не сохраняется в базе?

Языки: джава или гоу.

READ ALSO
Как сделать 2 запроса в rx java?

Как сделать 2 запроса в rx java?

Есть 2 сервисаНезависимые у и каждого свои модели ответа

199
Десереализация Json в REST запросе

Десереализация Json в REST запросе

Всем привет! У меня такая проблема

244
Размещение кнопок в активити

Размещение кнопок в активити

Можно ли как-то быстро выстроить кнопки как показано на картинке? Через RelativeLayout - долго, пробовал через LinearLayout, но там ориентация только horizontal...

176
Передача RTP медиа android

Передача RTP медиа android

Реализовую SIP протокол с помощью javaxsip

166