让Web应用程序是文件处理程序

2021-06-14 21:35:34

文件处理API是功能项目的一部分,当前正在开发中。这篇文章将在执行进展情况时更新。

现在,Web应用程序能够读写文件,下一个逻辑步骤是让开发人员将这些非常Web应用程序声明为文件处理程序,因为他们的应用程序可以创建和进程。文件处理API允许您完成此操作。将文本编辑器应用程序注册为文件处理程序后,您可以在麦斯斯上单击.txt文件,然后选择"获取信息"然后指示操作系统,它应该始终将此应用程序默认打开.txt文件。

要在本地进行文件处理API,而无需源性试用令牌,请启用A //标志中的#file-handling-API标志。

无法聚合使用文件处理API本身。然而,使用Web应用程序打开文件的功能可以通过另外两种方式实现:

Web Share Target API允许开发人员将其应用程序指定为共享目标,因此可以从操作系统和#39; S共享表中打开文件。

文件系统访问API可以与文件拖放集成,因此开发人员可以在已打开的应用程序中处理丢弃的文件。

作为第一步,Web应用程序需要在他们的Web应用程序中声明地描述他们可以处理的文件是什么样的文件。文件处理API扩展了使用名为" file_handlers&#34的新属性的Web应用程序清单;接受一系列,井文件处理程序。文件处理程序是具有两个属性的对象:

一个"行动"要指向应用范围内的URL的属性为其价值。

AN"接受"具有MIME类型对象的属性作为作为其值的文件扩展名称和文件扩展名单。

下面的示例,仅显示Web应用程序清单的相关摘录,应更清晰:

{..." file_handlers" :[{"行动" :" / Open-CSV" ,"接受" :{"文本/ csv" :[" .csv" ]}},{"动作" :" /开放式SVG" ,"接受" :{"图像/ svg + XML" :" .svg" }},{"动作" :" / open-graf" ,"接受" :{"应用程序/ vnd.grafr.graph" :[" .grafr" ," .graf" ],"应用程序/ vnd.alternative-graph-app.graph" :" .Graph" }}],...}

这是一个假设的应用程序,它处理/ Open-CSV,可缩放的矢量图形(.csv)文件处的逗号分隔值(.csv)文件,可在/ open-svg和与.grafr中的任何一个组成的grafr文件格式,.graf,或.graph作为/开放地区的延伸。

对于此声明有任何效果,必须安装应用程序。您可以在本网站上的文章系列中了解更多内容,让您的应用程序可安装。

既然该应用程序已声明它可以在理论上掌握范围内网址的文件中的哪些文件,它需要在实践中致命地进行传入文件。这是发射曲线发挥作用的地方。要访问启动文件,站点需要为window.launchqueue对象指定消费者。启动是排队,直到它们由指定的消费者处理,这是每次启动的一次才能调用一次。以这种方式,无论在指定消费者时,处理每次发布。

if(' Labledutue'在窗口中){LabrowQueue。 setConsumer((LaunchParams)=> {//当队列为空时,无需任何操作。如果(!启动日常.length){return;} for(launchpeperams .files的const filehandle){//处理文件。} }); }

在本文的时候,没有DevTools支持,但我已经提交了一个要添加的支持的功能请求。

我已添加文件处理支持,以Excalidraw,卡通风格的绘图应用程序。当您使用它创建文件并将其存储在文件系统上的某个位置时,您可以通过双击或右键打开文件,然后选择" Excalidraw"在上下文菜单中。您可以查看源代码中的实现。

Chrome Team使用控制权限,包括用户控制,透明度和人体工程学,包括控制访问功能的核心原则,设计和实现了文件处理API。

确保用户信任和用户的安全性'文件在文件处理API用于打开文件时,将在PWA可以查看文件之前显示权限提示。在以下任一种方案之后将在以下任一种方案之后显示此权限提示:

用户选择PWA以打开文件,以便权限紧密地耦合到使用PWA打开文件的动作,使其更加理解和相关。

没有文件的站点加载,以便用户期望PWA是什么以及为什么要查看文件。

此许可每次都会显示,直到用户点击以允许或阻止该站点的文件处理,或忽略提示三次(之后,铬将禁运并阻止此许可)。所选设置将涵固PWA关闭和重新开放。

当清单更新和更改和#34; file_handlers"部分检测到,权限将被重置。

通过允许网站访问文件,存在大类攻击向量。这些在文件系统访问API上的文章中概述。文件处理API提供的额外安全相关性能提供文件系统访问API是能够通过操作系统' S内置UI授予某些文件的访问权限,而不是通过A显示的文件选择器Web应用程序。

仍然存在用户可能无意中通过打开它来对文件访问文件的风险。然而,通常可以理解,打开文件允许应用程序被打开,以便读取和/或操纵该文件。因此,用户' s明确的选择要在安装的应用程序中打开文件,例如通过AN"与...&#34打开;上下文菜单可以读取应用程序中的足够信任信号。

对此的例外是当主机系统上没有用于给定文件类型的应用程序。在这种情况下,某些主机操作系统可以自动将新注册的处理程序推广到该文件类型的默认处理程序,默默地,默默地,没有用户的任何干预。这将意味着用户双击该类型的文件,它将在注册的Web应用程序中自动打开。在这样的主机操作系统上,当用户代理确定没有文件类型的现有默认处理程序时,可能需要显式权限提示以避免意外地将文件的内容发送到没有用户的Web应用程序。同意。

规范指出,浏览器不应注册可以将文件处理为文件处理程序的每个站点。相反,文件处理登记应该在安装后面门控,而不会发生没有明确的用户确认,特别是如果站点是成为默认处理程序。而不是劫持像.json,而用户可能已经有一个默认处理程序注册,则站点应该考虑制作自己的扩展。

所有操作系统允许用户更改当前文件关联。这超出了浏览器的范围。

是否有关于API的事情,这也像你一样的工作?或者是否缺少履行您的想法的方法或属性?有一个问题或评论安全模型?

在相应的github repo上提交规格问题,或将您的想法添加到现有问题。

你有没有找到镀铬的错误&#39的实施?或者与规范不同吗?

在new.crbug.com上提交错误。请务必与您提供尽可能多的细节,简单的再现说明,进入UI>浏览器> webappinstalls> filehandling在组件框中。毛刺很高兴分享快速和简单的Repros。

您是否计划使用文件处理API?您的公共支持帮助Chrome团队能够优先考虑功能,并显示其他浏览器供应商支持它们是多么关键。

使用Hashtag将Tweet发送到@ChromiumDev #fileHandling并告诉我们您使用它的位置以及如何使用它。

文件处理API由Eric Walligers,Jay Harris和Raymes Khoury指定。这篇文章由Joe Medley审查。