FTP
文件传输协议(FTP)是一种标准网络协议,用于在计算机网络上的客户端和服务器之间传输计算机文件。 FTP 基于客户端-服务器模型体系结构构建,使用客户端与服务器之间的单独控制和数据连接。
此连接器在以下产品和区域中可用:
| 服务 | Class | 区域 |
|---|---|---|
| Copilot Studio | 标准 | 除以下各项外的所有 Power Automate 区域 : - 美国政府 (GCC High) - 美国国防部(DoD) |
| 逻辑应用程序 | 标准 | 所有 逻辑应用区域 |
| Power Apps | 标准 | 除以下各项外的所有 Power Apps 区域 : - 美国政府 (GCC High) - 美国国防部(DoD) |
| Power Automate | 标准 | 除以下各项外的所有 Power Automate 区域 : - 美国政府 (GCC High) - 美国国防部(DoD) |
| 连接器元数据 | |
|---|---|
| 发布者 | Microsoft |
已知问题和限制
本文仅介绍适用于 Azure 逻辑应用、Power Automate 和 Power Apps 的 FTP 托管连接器的作。 FTP 内置 连接器仅适用于 Azure 逻辑应用中的标准逻辑应用工作流。 有关 Azure 逻辑应用中 FTP 内置连接器的详细信息,请查看 从 Azure 逻辑应用中的工作流连接到 FTP 服务器。
FTP 触发器现在仅返回元数据或属性,而不返回文件内容。 但是,可以使用名为 Get 文件内容的作遵循这些触发器。 若要确保触发器一次返回一个文件,而不是列表,请确保启用触发器的“拆分方式”选项。 有关 Azure 逻辑应用中此选项的详细信息,请查看 “触发多个运行”。
FTP 触发器仅适用于指定的文件夹,而不适用于子文件夹。 若要检查文件夹的子文件夹,请为每个子文件夹设置单独的流。
默认情况下,FTP 托管连接器 作可以读取或写入 大小为 50 MB 或更小的文件。 若要处理大于 50 MB 的文件,可以使用名为 Get 文件内容的 FTP 托管连接器作,该作隐式使用消息分块。 其他 FTP 托管连接器作还支持启用 消息分块。
当返回新创建、添加或更新的文件时,FTP 触发器可能会遇到延迟或不完整的结果。
当 FTP 触发器检查新添加或更改的文件时,触发器还会确认该文件已完成。 例如,触发器检查 FTP 服务器时,文件可能正在进行更改。 为了避免返回不完整的文件,触发器会记下文件的时间戳,但不会立即返回该文件。 相反,触发器仅在触发器再次检查服务器时返回该文件。 有时,此行为可能会导致延迟持续到触发器轮询间隔的两倍。 由于此行为,如果禁用 FTP 触发器的 “拆分时 ”设置,FTP 触发器可能不会同时返回所有文件,
保留“上次修改时间”时间戳时,FTP 托管连接器触发器可能会遇到缺失、不完整或延迟的结果。
缺少结果
FTP 触发器的工作原理是轮询或检查 FTP 文件系统,并查找自上次轮询以来更改的任何文件。 FTP 托管连接器使用文件的上次修改时间戳来比较文件版本。
如果使用的时间戳早于当前跟踪的上次修改时间戳创建、添加或更新文件,则 FTP 托管连接器触发器不会检测此文件。 另一方面,标准型逻辑应用工作流中的 FTP 内置连接器触发器没有此限制。
因此,如果使用在 FTP 服务器上创建、添加或更新文件的外部工具或客户端,请确保禁用工具或客户端中保留文件的上次修改时间戳的任何功能。
下表列出了保留此时间戳的一些常用工具以及禁用此功能的步骤:
FTP 客户端 Action WinSCP 转到 “选项>首选项>传输>编辑>保留时间戳>禁用”。 FileZilla 转到“传输>保留已传输文件的>时间戳”禁用。 结果不完整或延迟
当 FTP 触发器检查新创建、添加或更新的文件时,触发器还会检查文件是否已完成。 例如,触发器检查 FTP 服务器时,文件可能正在进行更改。 为了避免返回不完整的文件,触发器会记下文件的时间戳,但不会立即返回该文件。 相反,触发器仅在触发器再次检查服务器时返回该文件。
有时,此行为可能会导致延迟,只要触发器的轮询间隔几乎是触发器的轮询间隔的两倍。 由于此行为,如果禁用 FTP 触发器的 “拆分时 ”设置,FTP 触发器可能不会同时返回所有文件。
要求
FTP 连接器需要 FTP 主机服务器地址和帐户凭据。
FTP 连接器需要从 Internet 或通过 Internet 访问 FTP 服务器。 有关允许使用特定 IP 范围的 FTP 服务器的流量的详细信息,请查看 托管连接器 IP 地址。
FTP 连接器要求 FTP 服务器在 被动 模式下运行或接受。
FTP 连接器要求 FTP 服务器启用以下命令并支持包含空格的文件夹,以便命令能够正常工作。 对于 LIST 命令,请确保该命令返回
year超过 6 个月的文件时间戳的组件。- APPE
- DELE
- 列表
- MDTM
- RENAME
- RETR
- 大小
- STOR
对于安全 FTP,请确保设置 显式 文件传输协议安全(FTPS),而不是隐式 FTPS。 此外,某些 FTP 服务器(如 ProFTPd)要求在使用传输层安全性(TLS)模式(安全套接字层(SSL)的后续版本)时启用
NoSessionReuseRequired该选项。FTP 连接器不适用于隐式 FTPS,仅支持通过 FTPS 显式 FTP,这是 TLS 的扩展。
FTP 连接
若要提高 FTP 连接器和 FTP 服务器的性能,可以在连接器完成请求后保持 FTP 连接打开和处于活动状态。
创建与 FTP 服务器的连接时,出现的连接配置文件框在 请求完成后具有名为 Close 连接的设置。 此设置指定是否在请求完成后每次关闭 FTP 服务器连接。 如果禁用此设置,则请求完成后连接不会关闭,并保持活动状态以供将来使用。
如果工作流实例并行运行,可能会遇到间歇性连接错误。 即使工作流中的其他作仍在使用该连接,工作流中的某些作也可能强行关闭连接。
若要避免这种情况,请尝试以下建议:
创建连接时,请在 请求完成设置后启用“关闭”连接 。
关闭在触发器或作上启用的任何并行化或并发。 有关 Azure 逻辑应用中此解决方案的详细信息,请查看以下文档:
避免运行多个并行流。
在不使用分块的情况下使用“创建文件”作
对于 “创建文件 ”作,行为取决于作的 “允许分块 ”设置和要创建的文件的大小:
允许启用分块 :
文件大小等于或小于 50 MB:作使用单个请求上传文件,使用原始文件名,并在上传过程中锁定文件。
文件大小大于 50 MB:该作创建文件名格式为文件名的文件。new-GUID.ms.partial,并使用多个请求或消息分块上传文件。 在作上传最后一个区块后,该作会重命名具有原始文件名的文件。
允许禁用分块 :该作使用单个请求上传文件,使用原始文件名,并在上传过程中锁定文件。
连接器作指南
有关如何在 Azure 逻辑应用中使用 FTP 托管连接器和内置连接器的信息,请查看 从 Azure 逻辑应用中的工作流连接到 FTP 服务器。
常规限制
| Name | 价值 |
|---|---|
| 单个存档中的最大文件夹数。 此限制仅适用于“创建文件夹?”时 设置为“是”。 | 16 |
| 在带宽时间间隔(每个连接)内传入/传出连接器的最大兆字节数 | 1000 |
| 带宽时间间隔(以米利西康德为单位) | 60000 |
正在创建连接
连接器支持以下身份验证类型:
| 默认 | 用于创建连接的参数。 | 所有区域 | 不可共享 |
违约
适用:所有区域
用于创建连接的参数。
这是不可共享的连接。 如果 Power App 与另一个用户共享,系统会提示其他用户显式创建新连接。
| Name | 类型 | Description | 必选 |
|---|---|---|---|
| 服务器地址 | 字符串 | 服务器地址 | True |
| 用户名 | 字符串 | 用户名 | True |
| 密码 | securestring | 密码 | True |
| FTP 服务器端口 | int | FTP 端口号(示例:21) | |
| 启用 SSL? | 布尔 | 启用 SSL? (真/假) | |
| 二进制传输? | 布尔 | 启用二进制传输? (真/假) | |
| 禁用证书验证? | 布尔 | 禁用证书验证? (真/假) | |
| 完成请求后关闭连接 | 布尔 | 请求完成后每次关闭 FTP 连接? (真/假) |
限制
| 名称 | 调用 | 续订期 |
|---|---|---|
| 每个连接的 API 调用数 | 900 | 60 秒 |
操作
| 使用路径获取文件元数据 |
此作使用文件路径获取文件的元数据。 |
| 使用路径获取文件内容 |
此作使用文件路径获取文件的内容。 |
| 列出文件夹中的文件 |
此作获取文件夹中的文件和子文件夹的列表。 |
| 列出根文件夹中的文件 |
此作获取根文件夹中的文件和子文件夹的列表。 |
| 创建文件 |
此作将创建一个文件。 如果在创建文件后立即在服务器上删除/重命名文件,连接器可能会因设计而返回 HTTP 404 错误。 请在删除或重命名新创建的文件之前使用延迟 1 分钟。 |
| 删除文件 |
此作将删除文件。 |
| 复制文件 |
此作将文件复制到 FTP 服务器。 如果在复制文件后立即在服务器上删除/重命名文件,连接器可能会按设计返回 HTTP 404 错误。 请在删除或重命名新创建的文件之前使用延迟 1 分钟。 |
| 将存档解压缩到文件夹 |
此作将存档文件提取到文件夹中(例如:.zip)。 |
| 更新文件 |
此作将更新文件。 如果在更新文件后立即在服务器上删除/重命名文件,连接器可能会通过设计返回 HTTP 404 错误。 请在删除或重命名最近更新的文件之前使用延迟 1 分钟。 |
| 获取文件元数据 |
此作获取文件的元数据。 |
| 获取文件内容 |
此作获取文件的内容。 |
使用路径获取文件元数据
使用路径获取文件内容
此作使用文件路径获取文件的内容。
参数
| 名称 | 密钥 | 必需 | 类型 | 说明 |
|---|---|---|---|---|
|
文件路径
|
path | True | string |
选择文件 |
|
推断内容类型
|
inferContentType | boolean |
基于扩展推断内容类型 |
返回
文件的内容。
- 文件内容
- binary
列出文件夹中的文件
列出根文件夹中的文件
创建文件
此作将创建一个文件。 如果在创建文件后立即在服务器上删除/重命名文件,连接器可能会因设计而返回 HTTP 404 错误。 请在删除或重命名新创建的文件之前使用延迟 1 分钟。
参数
| 名称 | 密钥 | 必需 | 类型 | 说明 |
|---|---|---|---|---|
|
文件夹路径
|
folderPath | True | string |
选择文件夹 |
|
文件名
|
name | True | string |
文件的名称 |
|
文件内容
|
body | True | binary |
文件的内容 |
|
获取所有文件元数据
|
ReadFileMetadataFromServer | boolean |
文件创建完成后,从 SFTP 服务器获取所有文件元数据。 如果为 false,则某些元数据属性可能不会返回,例如上次修改时间等。 |
返回
Blob 元数据
- Body
- BlobMetadata
删除文件
此作将删除文件。
参数
| 名称 | 密钥 | 必需 | 类型 | 说明 |
|---|---|---|---|---|
|
文件
|
id | True | string |
选择文件 |
复制文件
此作将文件复制到 FTP 服务器。 如果在复制文件后立即在服务器上删除/重命名文件,连接器可能会按设计返回 HTTP 404 错误。 请在删除或重命名新创建的文件之前使用延迟 1 分钟。
参数
| 名称 | 密钥 | 必需 | 类型 | 说明 |
|---|---|---|---|---|
|
源 URL
|
source | True | string |
源文件的 URL |
|
目标文件路径
|
destination | True | string |
目标文件路径,包括目标文件名 |
|
改写?
|
overwrite | boolean |
如果设置为“true”,则覆盖目标文件 |
返回
Blob 元数据
- Body
- BlobMetadata
将存档解压缩到文件夹
此作将存档文件提取到文件夹中(例如:.zip)。
参数
| 名称 | 密钥 | 必需 | 类型 | 说明 |
|---|---|---|---|---|
|
源存档文件路径
|
source | True | string |
存档文件的路径 |
|
目标文件夹路径
|
destination | True | string |
目标文件夹的路径 |
|
改写?
|
overwrite | boolean |
如果设置为“true”,则覆盖目标文件 |
|
|
创建文件夹?
|
createFolders | boolean |
如果设置为“true”,则从存档中提取文件夹 |
返回
- response
- array of BlobMetadata
更新文件
此作将更新文件。 如果在更新文件后立即在服务器上删除/重命名文件,连接器可能会通过设计返回 HTTP 404 错误。 请在删除或重命名最近更新的文件之前使用延迟 1 分钟。
参数
| 名称 | 密钥 | 必需 | 类型 | 说明 |
|---|---|---|---|---|
|
文件
|
id | True | string |
选择文件 |
|
文件内容
|
body | True | binary |
文件的内容 |
返回
Blob 元数据
- Body
- BlobMetadata
获取文件元数据
获取文件内容
此作获取文件的内容。
参数
| 名称 | 密钥 | 必需 | 类型 | 说明 |
|---|---|---|---|---|
|
文件
|
id | True | string |
选择文件 |
|
推断内容类型
|
inferContentType | boolean |
基于扩展推断内容类型 |
返回
文件的内容。
- 文件内容
- binary
触发器
| 添加或修改文件时 [已弃用] |
此作在文件夹中添加或修改文件时触发流。 触发器将同时提取文件元数据和文件的内容。 触发器依赖于文件的上次修改时间。 如果文件是由第三方客户端创建的,则应在客户端中禁用上次修改时间的保留。 触发器跳过大于 50 兆字节的文件。 如果在子文件夹中添加/更新文件,触发器不会触发。 如果需要在子文件夹中触发,则应创建多个触发器。 |
| 添加或修改文件时(仅属性) |
在文件夹中添加或修改一个或多个文件时,此作将触发流。 此触发器将仅提取文件元数据。 若要获取文件内容,可以使用“获取文件内容”作。 触发器依赖于文件的上次修改时间。 如果文件是由第三方客户端创建的,则应在客户端中禁用上次修改时间的保留。 如果在子文件夹中添加/更新文件,触发器不会触发。 如果需要在子文件夹中触发,则应创建多个触发器。 |
添加或修改文件时 [已弃用]
此作在文件夹中添加或修改文件时触发流。 触发器将同时提取文件元数据和文件的内容。 触发器依赖于文件的上次修改时间。 如果文件是由第三方客户端创建的,则应在客户端中禁用上次修改时间的保留。 触发器跳过大于 50 兆字节的文件。 如果在子文件夹中添加/更新文件,触发器不会触发。 如果需要在子文件夹中触发,则应创建多个触发器。
参数
| 名称 | 密钥 | 必需 | 类型 | 说明 |
|---|---|---|---|---|
|
文件夹
|
folderId | True | string |
选择文件夹 |
|
包括文件内容
|
includeFileContent | boolean |
如果设置为 true,则还会连同触发器响应一起检索文件内容 |
|
|
推断内容类型
|
inferContentType | boolean |
基于扩展推断内容类型 |
返回
文件的内容。
- 文件内容
- binary
添加或修改文件时(仅属性)
在文件夹中添加或修改一个或多个文件时,此作将触发流。 此触发器将仅提取文件元数据。 若要获取文件内容,可以使用“获取文件内容”作。 触发器依赖于文件的上次修改时间。 如果文件是由第三方客户端创建的,则应在客户端中禁用上次修改时间的保留。 如果在子文件夹中添加/更新文件,触发器不会触发。 如果需要在子文件夹中触发,则应创建多个触发器。
参数
| 名称 | 密钥 | 必需 | 类型 | 说明 |
|---|---|---|---|---|
|
文件夹
|
folderId | True | string |
选择文件夹 |
|
要返回的文件数
|
maxFileCount | integer |
单个触发器运行返回的最大文件数(1-100)。 请注意,“拆分打开”设置可以强制触发以单独处理每个项。 |
返回
Blob 元数据
- 文件列表
- BlobMetadata
定义
BlobMetadata
Blob 元数据
| 名称 | 路径 | 类型 | 说明 |
|---|---|---|---|
|
Id
|
Id | string |
文件或文件夹的唯一 ID。 |
|
Name
|
Name | string |
文件或文件夹的名称。 |
|
显示名称
|
DisplayName | string |
文件或文件夹的显示名称。 |
|
路径
|
Path | string |
文件或文件夹的路径。 |
|
LastModified
|
LastModified | date-time |
上次修改文件或文件夹的日期和时间。 |
|
尺寸
|
Size | integer |
文件或文件夹的大小。 |
|
MediaType
|
MediaType | string |
文件或文件夹的媒体类型。 |
|
IsFolder
|
IsFolder | boolean |
一个布尔值(true、false),用于指示 Blob 是否为文件夹。 |
|
ETag
|
ETag | string |
文件或文件夹的 etag。 |
|
FileLocator
|
FileLocator | string |
文件或文件夹的 filelocator。 |
二进制
这是基本数据类型“binary”。