Библиотека JavaScript для простой интеграции облачного хранилища в редактор

Я создаю веб-приложение только на стороне клиента, которое представляет собой текстовый процессор определенного типа, поэтому пользователю нужно будет сохранять / загружать файлы. Я хочу добавить популярный вариант облачного хранилища (например, Dropbox, Drive), который должен предоставлять следующие особые функции:

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

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

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

Что я исследовал перед публикацией:

  1. В настоящее время я использую написанную мной библиотеку, предназначенную только для хранения в браузере, и я мог бы сделать куча работы по расширению его для поддержки облачных API, но я надеюсь, что есть более простой способ.
  2. Dropbox предоставляет Chooser и Saver, которые очень просты в использовании, но удовлетворяют только требованиям 1 и 2, а не 3.
  3. Kloudless кажется отличной межсервисной платформой, но я думаю, что она тоже обрабатывает только требования. 1 и 2, а не 3.
  4. Dropbox также предоставляет полный API, но не предоставляет диалогов; вы должны сами создать пользовательский интерфейс для просмотра файлов. Та же история и с Google Диском.
  5. Для отображения красивых файлов существует тонна других клиентских библиотек. диалоговые окна браузера, но большинство из них обрабатывают все события с AJAX на сервере. Мое приложение предназначено только для клиента.

person Nathan    schedule 02.09.2017    source источник
comment
Вы пропустили 1 вещь, на которую следует обратить внимание перед публикацией: страницу справочного центра. Запрашивать внешние ресурсы не по теме для Stack Overflow.   -  person Ivar    schedule 02.09.2017
comment
Ах. Есть ли подходящий способ, которым я должен был задать вопрос, или я должен просто взять его в другом месте? @ Ивар   -  person Nathan    schedule 02.09.2017
comment
Если вы действительно ищете библиотеку, то Stack Overflow - не подходящее место. Если вы пытаетесь решить что-то с помощью библиотеки, которую можно решить без нее, вы можете спросить об этом, пояснив, чего вы пытаетесь достичь.   -  person Ivar    schedule 02.09.2017
comment
@Ivar Кажется (из помощи, к которой вы меня направили), что я должен перефразировать свой вопрос, чтобы не запрашивать библиотеку, а просто попросить лучшие методы решения, и люди могут порекомендовать библиотеку или другой способ атаки на мою проблему. Сейчас я отредактирую вопрос, чтобы подчиниться этим указаниям.   -  person Nathan    schedule 03.09.2017


Ответы (1)


Решение, с которым я столкнулся

В итоге я создал свой собственный инструментарий для решения этой проблемы (на GitHub здесь). В настоящее время он поддерживает только два серверных хранилища:

  • в браузере LocalStorage
  • Dropbox в облаке

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

А как насчет Kloudless?

Я протестировал Kloudless и подтвердил, что он делает больше, чем я думал, но все же недостаточно.

  • Он поддерживает "Сохранить" в дополнение к "Сохранить как ...", как объясняет один разработчик. здесь.
  • Он не позволяет клиентам отправлять данные в виде URI данных, но требует, чтобы данные уже существовали по заранее определенному URL-адресу в Интернете. Таким образом, приложение-редактор, полностью работающее на стороне клиента, не может использовать Kloudless, что, следовательно, не решает мою проблему.
person Nathan    schedule 03.09.2017