Открыть файл с помощью системного приложения в Progressive Web App - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь выяснить, возможно ли открыть файл из Progressive Web App с помощью системного приложения по умолчанию.

Идея состоит в том, что PWA будет хранить для автономного использования некоторые файлы (например,файл .docx), и что пользователь сможет открыть их без (повторной) загрузки.

В идеальном случае PWA может загрузить в память файл, сделать его доступным для системного приложения по умолчанию для этого типа файлов (например, Word для файлов .docx), следить за изменениями (т.е.пользователь сохраняет изменения), а затем сохраняет его обратно в хранилище PWA.Даже решение, предназначенное только для чтения, было бы замечательно.

Поскольку существуют серьезные проблемы с безопасностью и поскольку из поиска в Google ничего не найдено, лучше всего, чтобы это (пока) не поддерживалось.Тем не менее, я надеюсь, что может быть способ сделать это, о котором я не знаю, и который не требует, чтобы пользователь загрузил копию файла.

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Поскольку в последнее время этот вопрос привлек много внимания, для всех, кто интересуется этой темой, есть очень интересные новости: Writable Files API .

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

ОБНОВЛЕНИЕ 2019-04-12

В настоящее время существует объяснитель (также связанный в вышеупомянутомсообщение) с большим количеством полезной информации о том, как предложенные API будут / должны работать.

0 голосов
/ 06 июня 2018

Нет, PWA не может прослушивать обычные изменения файловой системы, за исключением файлов, которые помещаются в изолированную программную среду для самого приложения (которое похоже на виртуальную файловую систему для каждого установленного PWA)

Вы можете обратиться к только прослушиватель событий для изменения хранилища здесь , который будет использоваться только для того, что вы сохраняете из PWA в специальном хранилище PWA, к которому ваши внешние приложения не могут получить доступ.

<input type="file"> - это единственный способ получить доступ к файловой системе обычного хранилища, в которой не будет даже прослушивателя.

То, что вы ожидаете, это то, что многие разработчики надеются получить в ближайшее время, но не в общей форме спецификации PWA.В основном это заблокировано ограничением безопасности, как вы упомянули.Подумайте обо всех веб-сайтах PWA (которые для конечных пользователей выглядят как обычные веб-сайты), которые мы посещаем в веб-браузере и имеют доступ к вашей полной файловой системе. Кто примет этот факт и понравится?Ни один. Никто.PWA должен развиваться, чтобы иметь отдельные разрешения после его добавления на домашний экран, и мы можем ожидать увидеть эти функции после этого.

Обновление: Единственное альтернативное решение, которое вы должны использовать как для файловой системы, так и для PWA, - это обернуть вашу PWA в Cordova и использовать собственный API файловой системы вместе с такими функциями PWA, как работники сервиса, чтобы иметь возможность автономной работы.,Если веб-просмотр целевых пользователей достаточно недавний (v40 +), он будет поддерживать сервисных работников.С помощью этой опции нельзя распространять приложения с помощью опции «Добавить на главный экран», и, если вы это сделаете, она не будет поддерживать доступ к файловой системе.

Использование Electron для переноса веб-приложения может быть еще одним альтернативным вариантом, который также предоставит доступ к вашей файловой системе.IDE, такие как Atom, VS Code, создаются с использованием Electron и HTML / CSS / JS.

...