【发布时间】:2022-06-20 21:28:48
【问题描述】:
在我正在开发的 Web 应用程序中,我希望能够下载文件、在本地修改它们并将它们重新上传到服务器。
为了让用户尽可能轻松,我希望他们选择下载位置,然后使用一个按钮上传更改。
我目前的方法如下:
- 使用
window.showSaveFilePicker选择位置并获取FileSystemFileHandle - 下载内容并写入
FileSystemFileHandle - 显示一个按钮,允许使用
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