web-dev-qa-db-fra.com

Ouvrir un fichier avec une application système dans une application Web progressive

J'essaie de comprendre s'il est possible d'ouvrir un fichier à partir d'une application Web progressive avec l'application système par défaut.

L'idée est qu'un PWA stocke pour une utilisation hors ligne certains fichiers (par exemple un fichier .docx), et que l'utilisateur puisse les ouvrir sans les (re) télécharger.

La situation idéale serait que le PWA soit capable de charger en mémoire le fichier, de le rendre accessible à l'application système par défaut pour ce type de fichier (par exemple Word pour les fichiers .docx), de surveiller les modifications (c'est-à-dire que l'utilisateur enregistre les modifications), et puis stockez-le dans le stockage PWA. Même une solution en lecture seule serait formidable.

Puisqu'il y a de sérieux problèmes de sécurité implicites et que rien ne s'est produit lors d'une recherche Google, mon meilleur pari est que ce n'est pas (encore) supporté. Cependant, j'espère qu'il pourrait y avoir un moyen de le faire dont je ne suis pas au courant et qui ne nécessite pas que l'utilisateur télécharge une copie du fichier.

9
don

Depuis que cette question a attiré beaucoup d'attention ces derniers temps, pour toute personne intéressée par le sujet, il y a des nouvelles très intéressantes: le Writable Files API .

Pour le moment, les nouvelles API proposées sont simplement en phase de conception, et il y a une discussion animée sur l'opportunité même de les introduire. Il semble donc que nous soyons encore loin d'une solution prête pour la production.

MISE À JOUR 2019-04-12

Il y a maintenant un explicateur (également lié dans le post mentionné ci-dessus) avec beaucoup d'informations utiles sur la façon dont les API proposées fonctionneront/devraient fonctionner.

8
don

Non, PWA ne peut pas écouter les modifications régulières du système de fichiers, à l'exception des fichiers qui sont mis en sandbox vers l'application elle-même (qui est comme un système de fichiers virtuel pour chaque PWA installé)

Vous pouvez vous référer à niquement l'écouteur d'événements pour le changement de stockage ici , qui sera uniquement pour ce que vous stockez de PWA vers votre espace de stockage spécifique PWA, auquel vos applications externes ne peuvent pas accéder.

<input type="file"> est le seul moyen d'accéder au système de fichiers de stockage normal, qui n'aura aucun écouteur régulier.

Ce que vous attendez est quelque chose que de nombreux développeurs espèrent obtenir bientôt, mais pas sous la forme générale de spécifications PWA. Son principalement bloqué par des contraintes de sécurité comme vous l'avez mentionné. Pensez à tous les sites Web PWA (qui ressemblent à un site Web normal pour les utilisateurs finaux) que nous visitons dans le navigateur Web ont accès à votre système de fichiers complet .. qui acceptera et aimera ce fait? Personne. PWA devrait évoluer pour avoir des autorisations distinctes une fois qu'il sera ajouté à l'écran d'accueil et nous pouvons nous attendre à voir ces fonctionnalités après cela.

Mise à jour: La seule solution alternative que vous devez utiliser à la fois le système de fichiers et PWA consiste à envelopper votre PWA dans un Cordova et à utiliser l'API du système de fichiers natif avec des fonctionnalités PWA comme Les travailleurs des services doivent avoir une capacité hors ligne. Si la vue Web de vos utilisateurs ciblés est suffisamment récente (v40 +), elle prendra en charge les techniciens de maintenance. Avec cette option, vous ne pouvez pas distribuer les applications via l'option "Ajouter à l'écran d'accueil" et si vous le faites, il ne prendra pas en charge l'accès au système de fichiers.

L'utilisation d'Electron pour envelopper votre application Web peut être une autre alternative, qui donnera également accès à votre système de fichiers. Les IDE comme Atom, VS Code sont construits en utilisant Electron et HTML/CSS/JS.

1
Anand