文件系统

1,071次阅读
没有评论

共计 4651 个字符,预计需要花费 12 分钟才能阅读完成。

文件系统插件

文件系统插件允许在本地系统上读取和写入文件和文件夹。

要演示如何使用文件系统功能,请参阅文本编辑器示例。

浏览器 / 平台支持

为了使文件系统插件功能正常工作,浏览器必须支持完整的文件系统访问 API。(注意:文件系统插件不使用起源私有文件系统或 OPFS。)截至 2023 年 7 月,这仅在 Chrome 和 Edge(以及大多数其他基于 Chromium 的浏览器)上受支持。值得注意的是,这意味着 Firefox、Safari 和移动设备目前不受支持。然而,它也受 NW.js 导出器和 Windows WebView2 导出器的支持。

权限模型

浏览器施加安全限制以确保一般的网页浏览是安全的。因此,它们一开始根本不允许访问本地文件或文件夹。获得对本地文件和文件夹的访问权的唯一方法是显示选择器 –“保存文件”对话框、“打开文件”对话框或“选择文件夹”对话框。一旦用户通过做出选择并点击确定成功完成选择器,就会授予访问所选文件或文件夹的权限。这可能与其他工具不同,后者通过文件路径自动允许直接访问文件系统。

在浏览器中,也只允许在选择器的触发下显示选择器,例如点击按钮或开始触摸。这是另一个安全措施,以确保选择器不会在意外的时候显示,例如页面加载后立即显示。
在某些情况下,浏览器还会显示访问文件的权限提示。例如,使用“打开文件”选择器选择文件允许读取文件,而无需进一步的权限提示,因为选择器授予了读取权限。但是,如果稍后尝试写入已打开的文件,浏览器通常会显示权限提示,以验证用户是否愿意允许修改其先前选择的文件。这只适用于浏览器 – NW.js 和 WebView2 导出将不会显示权限提示(尽管它们仍必须先使用选择器来获得对文件和文件夹的访问权限)。

为了避免需要不断显示选择器,Construct 还能够保存访问先前选择的文件和文件夹的权限。如果之前会话中完成了选择器并且仍然可以访问相同的所选文件或文件夹,则 Has picker 标签条件将为 true。当从以前的会话访问文件或文件夹时,浏览器也可能显示权限提示。

选择器标签和文件标签

标签是用于标识同一功能的不同类型的短文本片段。文件系统插件使用两种类型的标签。选择器标签标识不同的选择器对话框,例如两个不同的“打开文件”对话框的使用。每个成功完成的选择器都会授予访问所选文件或文件夹的权限,然后通过选择器标签引用。

然后,读取或写入文件使用文件标签。这标识了实际的文件系统操作,即读取或写入所选文件或文件夹。文件标签是可选的,因为只有在你想要跟踪文件系统操作完成或遇到错误时才需要它 – 如果你不关心结果,你可以将文件标签留空。

使用两种类型标签的原因是,一个选择器可能会授予对多个文件或文件夹的访问权限。例如,一个文件夹选择器可以授予对一个文件夹的访问权限,然后在其中写入两个文件。在这种情况下,有一个选择器标签标识用户选择的文件夹,然后有两个文件标签标识单独的写入操作。

总之,选择器标签是必需的,以便识别用户选择的文件和文件夹,但文件标签是可选的,用于识别读取或写入特定文件或文件夹何时完成或遇到错误。

文件系统条件

具有选取器标签

如果给定的选择器标签已经从以前的会话中记住,则为真。在这种情况下,可以在不再次显示选择器的情况下引用选择器标签进行文件系统操作,例如读取先前选择的文件。

在选择器完成时

在选取器上错误

在选择器完成或出错后触发,取决于与选择器匹配的结果。选择器在用户成功选择文件或文件夹并获得对选择的访问权限后完成。取消选择器或由于不在用户输入触发器中而无法显示选择器(例如),将触发 On picker error。

支持

如果支持文件系统功能,则为真。这取决于浏览器中对文件系统访问 API 的支持。如果为 false,则插件的所有功能都将不起作用。

文件操作完成

文件操作错误

在任何文件或文件夹操作(如读取文件或创建文件夹)完成后 / 失败后触发,具有匹配的文件标签。

在任何文件操作完成

在任何文件操作错误上

在任何文件或文件夹操作(如读取文件或创建文件夹)完成后 / 失败后触发,无论其文件标签如何。可以使用 FileTag 表达式检索关联的文件标签。

文件系统操作

添加接受类型

向打开文件或保存文件选择器中添加一个文件类型。默认情况下,选择器将显示所有类型的文件;添加接受类型后,默认筛选为这些类型的文件,添加多个接受类型允许用户在不同类型的过滤器之间切换。接受类型必须指定 MIME 类型,例如“text/plain”表示文本文件或“image/png”表示 PNG 图像。如果无法从 MIME 类型推断出文件扩展名,还可以提供文件扩展名列表。这些扩展名必须以点开始,并使用分号分隔多个文件扩展名(例如“.png;.jpg”表示允许.png 和.jpg 文件扩展名)。还可以提供一个描述,可能会在选择器中显示。当显示下一个选择器时,会清除已添加的接受类型列表,并且必须在另一个选择器之前再次添加;通常你应该在使用此动作之前立即显示选择器。

显示文件夹选择器

显示一个文件夹选择器,允许用户在其本地系统上选择一个文件夹。如果成功完成,Picker 标签标识所选文件夹。模式决定了用户看到的哪种权限提示。
可以将文件写入只读文件夹,但浏览器将显示另一个权限提示。最初获得读写权限将避免以后的权限提示。
Picker ID 是可选的额外标识符,用于记住选择器设置,例如上次查看的文件夹。Start in 设置允许选择作为文件夹选择器的初始选择的默认系统文件夹,但会被同一 Picker ID 的任何记住的设置覆盖。

显示打开文件选择器

显示一个打开文件选择器,允许用户在本地系统上选择一个或多个文件以打开。如果成功完成,Picker 标签标识所选文件或文件,并授予读取权限。(稍后可以写入文件,但浏览器将显示另一个权限提示。)Show accept all 设置是否显示接受所有类型文件的接受类型;如果禁用,则在此之前必须使用 Add accept type 操作。可以启用 Multiple 以允许用户在打开文件选择器中选择多个文件。
打开多个文件时,选择被视为一个空文件夹,其中仅包含所选文件。FileCount 和 FileNameAt 表达式将返回所选文件的列表,这些名称可以在读取或写入文件时用于 Folder path 参数。
Picker ID 是可选的额外标识符,用于记住选择器设置,如上次查看的文件夹。Start in 设置允许选择作为文件夹选择器的初始选择的默认系统文件夹,但会被同一 Picker ID 的任何记住的设置覆盖。

显示保存文件选择器

显示一个保存文件选择器,允许用户在本地系统上选择一个文件进行保存。如果成功完成,Picker 标签标识所选文件,并授予写入权限。
注意,所选文件将被擦除,因此无法从中读取。预计只会将文件内容写入。
Show accept all 设置是否显示接受所有类型文件的接受类型;如果禁用,则在此之前必须使用 Add accept type 操作。Suggested name 用作选择器中要保存到的初始文件名。Picker ID 是可选的额外标识符,用于记住选择器设置,如上次查看的文件夹。Start in 设置允许选择作为文件夹选择器的初始选择的默认系统文件夹,但会被同一 Picker ID 的任何记住的设置覆盖。

读取文本文件

读取二进制文件

从先前完成的选择器中读取文件的内容。通过 Picker 标签标识要读取的文件或文件夹。Folder path 是可选的,仅用于文件夹选择器或启用了 Multiple 的打开选择器,并指定要读取的文件名,例如,在使用文件夹选择器时为“file1.txt”或“subfolder/file2.txt”。使用保存文件选择器或打开单个文件的文件选择器时,保留 Folder path 为空,因为它未被使用,因为它将读取选择器选择的单个文件。File tag 是可选的,允许在使用 On file operation complete/error 触发器时识别读取操作何时完成或失败。在读取文本文件的情况下,完成时 FileText 表达式设置为读取的文本内容。在读取二进制文件的情况下,完成时将读取的文件内容放入所选的 Binary Data 对象中。

写入文本文件

写入二进制文件

将文本或二进制数据写入先前完成的选择器中的文件。通过 Picker 标签标识要写入的文件或文件夹。Folder path 是可选的,仅用于文件夹选择器或启用了 Multiple 的打开选择器,并指定要写入的文件名,例如,在使用文件夹选择器时为“file1.txt”或“subfolder/file2.txt”。使用保存文件选择器或打开单个文件的文件选择器时,保留 Folder path 为空,因为它未被使用,因为它将写入选择器选择的单个文件。File tag 是可选的,允许在使用 On file operation complete/error 触发器时识别写入操作何时完成或失败。在写入文本文件的情况下,给定的 Text 将写入文件,并且可以选择将文本内容追加到现有文件的末尾。

注意,保存文件选择器会擦除所选文件,因此追加只在使用打开文件选择器后才有

在写入二进制文件的情况下,所选二进制数据的内容将被写入该文件。

代码注释

复制文件

仅适用于文件夹选择器。在先前选定的文件夹内复制一个文件。源路径指定要复制的现有文件,例如“子文件夹 /file1.txt”。目标路径指定创建副本的位置;如果不存在,则创建一个新文件,如果已存在,则覆盖现有文件。文件标签是可选的,允许使用“文件操作完成 / 错误”触发器识别何时完成或失败。

创建文件夹

仅适用于文件夹选择器。在先前选定的文件夹内创建一个子文件夹。文件夹路径指定要创建的文件夹。这可以引用多个子文件夹,它们都将被创建,例如“子文件夹 / 另一个文件夹”。文件标签是可选的,允许使用“文件操作完成 / 错误”触发器识别何时完成或失败。

删除

仅适用于文件夹选择器。在先前选定的文件夹内删除一个文件或文件夹。文件夹路径指定要删除的文件或文件夹,例如“子文件夹 /file1.txt”或“子文件夹”。递归选项仅在文件夹路径标识一个文件夹时适用:如果启用,它将删除标识的文件夹中的所有文件和文件夹以及文件夹本身,但如果禁用,则只有当文件夹已经为空时才能成功删除该文件夹。文件标签是可选的,允许使用“文件操作完成 / 错误”触发器识别何时完成或失败。

列出内容

仅适用于文件夹选择器。检索先前选定的文件夹内所有文件和文件夹的列表。文件夹路径标识一个子文件夹以列出其内容,或者可以留空以列出最初选定的文件夹的内容。文件标签是可选的,允许使用“文件操作完成 / 错误”触发器识别何时完成或失败。完成后,可以使用 FileCount、FileNameAt、FolderCount 和 FolderNameAt 表达式访问可用的文件和文件夹。

文件系统表达式

文件计数
文件名 At(索引)
检索可用文件的数量和文件名。这可以在保存文件选择器之后用于识别所选保存的文件名(只是一个文件),在打开文件选择器之后用于识别可用的文件名(如果启用了 Multiple 选项,则可以是多个文件名,否则只是一个文件),或在列出文件夹内容的“列出内容”操作之后使用。
文件夹计数
FolderNameAt(索引)
在列出文件夹内容的“列出内容”操作之后,检索可用子文件夹的数量和名称。
文件文本
在成功完成读取文本文件操作后,读取文件的内容。

注意,当下一个读取文本文件操作完成时,此内容将被替换,因此最好在读取文件后立即使用它。

文件标记
在诸如“任何文件操作完成”之类的文件系统操作触发器中,返回关联文件操作的文件标签。

正文完
 0
评论(没有评论)