【问题标题】:File System Access API open file with local default application文件系统访问 API 使用本地默认应用程序打开文件
【发布时间】:2022-06-20 21:28:48
【问题描述】:

在我正在开发的 Web 应用程序中,我希望能够下载文件、在本地修改它们并将它们重新上传到服务器。
为了让用户尽可能轻松,我希望他们选择下载位置,然后使用一个按钮上传更改。
我目前的方法如下:

  1. 使用window.showSaveFilePicker 选择位置并获取FileSystemFileHandle
  2. 下载内容并写入FileSystemFileHandle
  3. 显示一个按钮,允许使用FileSystemFileHandle#getFile 上传更改以获取修改后的内容。

这种方法效果很好,但用户必须在下载后手动搜索并打开文件,我希望在这一步中支持他们并使其尽可能简单。
理想情况下,文件应该在下载后使用默认应用程序自动打开,但我找不到这样做的方法。
一个想法是使用file://-URL 在新选项卡中打开文件,允许浏览器决定要做什么,但FileSystemFileHandle 似乎没有公开绝对路径。
有没有办法用默认应用程序打开下载的文件?如果不是,还有哪些其他可能性可以使上述用例尽可能简单?

提前致谢

编辑: 我发现您可以使用ms-excel:ofe|u|file://path/to/file.xls 等特殊网址打开某些应用程序。 这对于大多数用例来说已经足够了,但要使其正常工作,我需要从 FileSystemFileHandle 获取文件 url。

【问题讨论】:

  • 为什么需要文件系统访问 API?你描述的方式,它不像你直接通过javascript将文件写入文件系统,文件是由最终用户手动编辑的。
  • 没错,但文件系统访问 API 允许我自动上传更改,因为我已经有了文件的句柄。没有它,用户需要再次手动选择文件。

标签: javascript native-file-system-api-js


【解决方案1】:

出于安全原因,Web 应用无法打开本地应用。但是,将来,一旦实现file change events,您就可以等待对文件的更改,然后重新打开它。这应该可以解决您的用例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-18
    相关资源
    最近更新 更多