Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在渐进式Web应用程序中使用系统应用程序打开文件_Javascript_File_Read Write_Pwa - Fatal编程技术网

Javascript 在渐进式Web应用程序中使用系统应用程序打开文件

Javascript 在渐进式Web应用程序中使用系统应用程序打开文件,javascript,file,read-write,pwa,Javascript,File,Read Write,Pwa,我试图弄清楚是否可以使用默认系统应用程序从渐进式Web应用程序打开文件 其想法是PWA将存储一些文件(例如.docx文件)供脱机使用,并且用户可以在不(重新)下载的情况下打开它们 理想情况是PWA能够将文件加载到内存中,使该文件类型的默认系统应用程序可以访问该文件(例如,Word for.docx文件),观察更改(即用户保存编辑),然后将其存储回PWA存储器。即使是只读解决方案也会很好 由于存在严重的安全问题,而且从谷歌搜索中什么都没有出现,我的最佳选择是这一点(尚未)得到支持。然而,我希望有一

我试图弄清楚是否可以使用默认系统应用程序从渐进式Web应用程序打开文件

其想法是PWA将存储一些文件(例如.docx文件)供脱机使用,并且用户可以在不(重新)下载的情况下打开它们

理想情况是PWA能够将文件加载到内存中,使该文件类型的默认系统应用程序可以访问该文件(例如,Word for.docx文件),观察更改(即用户保存编辑),然后将其存储回PWA存储器。即使是只读解决方案也会很好


由于存在严重的安全问题,而且从谷歌搜索中什么都没有出现,我的最佳选择是这一点(尚未)得到支持。然而,我希望有一种方法可以做到这一点,但我不知道,并且不需要用户下载文件副本。

不,PWA不能监听常规的文件系统更改,除了沙盒到应用程序本身的文件(对于每个安装的PWA,它就像一个虚拟文件系统)

您可以参考,它将仅用于您从PWA存储到PWA特定存储空间的内容,您的外部应用程序无法访问该存储空间

是访问常规存储文件系统的唯一方法,它甚至没有任何侦听器

您所期望的是许多开发人员希望很快得到的东西,但不是一般的PWA规范形式。正如您所提到的,它主要被安全约束所阻止。想想我们在web浏览器中访问的所有PWA网站(对于最终用户来说,它看起来像一个普通的网站)都可以访问您的完整文件系统。。谁会接受和喜欢这个事实?没有人。一旦将PWA添加到主屏幕上,PWA就应该发展为拥有单独的权限,我们可以期待在这之后看到这些功能

更新:您必须同时使用文件系统和PWA的唯一替代解决方案是将您的PWA包装在Cordova中,并使用本机文件系统API以及PWA功能(如Service workers)来实现脱机功能。如果您的目标用户webview足够新(v40+),它将支持服务人员。使用此选项,无法通过“添加到主屏幕”选项分发应用程序,如果您这样做,它将不支持文件系统访问


使用Electron包装您的web应用程序可以是另一种替代方法,它还可以访问您的文件系统。像Atom、VS Code这样的IDE是使用Electron和HTML/CSS/JS构建的。

因为这个问题最近引起了很多关注,对于任何对这个主题感兴趣的人来说,都有一个非常激动人心的消息:文件系统访问API(现在称为文件系统访问API)

目前,提议的新API仅处于设计阶段,关于引入它们的机会本身有一个生动的讨论。因此,看起来我们离生产就绪的解决方案还有很长的路要走

更新2019-04-12

现在有一个(在上面提到的帖子中也有链接)提供了很多关于提议的API将/应该如何工作的有用信息

更新2021-02-19


文件系统访问API仍在顺利发展。除了上一次更新中提到的解释者之外,还有一个

感谢您对听力部分的澄清。您是否知道是否支持打开PWA存储的文件(即PWA打开的文件已存储在其存储文件系统中)?如前所述,即使在只读模式下也有利于我的目的您的问题不清楚。如果您想在PWA中打开一个文件,它也是由PWA创建的,这是可能的。如果你想在word等其他应用程序中打开同一个文件,我怀疑。。可能取决于操作系统。可能是android,但我相信不是iOS。即使你在安卓系统中找到了一条隐蔽的路径并找到了一种打开它的方法,这也可能不是你的用户想要做的事情。Wrap@ghego1检查答案中的更新。如果您同时需要PWA和文件系统访问,这是您目前唯一的选择。感谢您提供的额外信息,但是我正在研究PWA,以避免像Cordova和Electron这样的应用程序包装。我知道PWA是首选。但给出了另外两个选项,因为没有可用的纯PWA解决方案。我也不明白你的意思,因为这似乎与你最初的要求不同。“PWA打开已存储在其存储文件系统中的文件”。无论如何,没有用于直接文件系统访问和监视的PWA解决方案。如果我们需要列出文件(而不显示文件选择器),该怎么办?如列表用户音频文件。根据当前的实现,您需要显示文件夹选择器,因为这样做需要获得明确的用户同意。文件夹选择器只能在用户输入(例如:单击按钮)后打开,并且必须在每次加载pwa时获得。但是,您可以存储对文件夹的引用,因此下次用户打开pwa时,您不需要显示文件夹选择器,只需弹出gran权限