如何使用switch函数检查文件名是否包含ABC

How to use switch functions to check if the file name conatins ABC

我创建了一个逻辑应用程序,我需要检查我的文件名是否包含“ABC”然后我需要复制文件并将其粘贴到 ABC 文件夹中 Azure 否则需要检查我的文件名是否包含“ZYX”然后将其粘贴到 Azure 中的 ZYX 文件夹中。

在 switch 函数中它给我一个错误。

"The execution of template action 'Switch' failed: The result of the evaluation of 'scope' action expression '@body('Get_file_content')' is not valid. It is of type 'Object' but is expected to be a value of type 'String, Integer'." [Image1]

或者如果我试图在并行分支中使用 2 个条件,它会给我以下错误。

![图2]

我也尝试了条件,如果文件名包含“ABC”,则复制粘贴到 ABC 文件夹中,如果为 false,则我尝试在 false 命令中使用其他条件。

此外,后续问题是,如果我有多个文件名与 ABC,那么我可以合并并将其放在一个文件中,然后将其粘贴到 Azure Blob 的 ABC 文件夹中

图片使用切换功能:

使用并行分支的图像条件:

![使用并行分支的图像条件]

附上您的建议的最新截图。 enter image description here

我刚试过使用一个,但它给了我错误。 enter image description here

错误原因:您无法通过file content作为开关连接器中的条件检查。

解决方案:为了获得上述所需的输出,您需要将文件名作为条件检查传递给开关控制。当我们从 SharePoint 连接器收到文件名作为 base64 格式时,我们需要使用 **base64ToString(FileName)** 将其解码为字符串,以比较 containers/blob.

中存在的文件夹名称

这是基于上述要求的逻辑应用的代码视图。

Also, follow up question would be if I have multiple file name with ABC then can I merge and place it in one file and paste that in ABC folder in Azure Blob

使用上述流程,无法合并文件,因为每个文件都以不同的扩展名保存,但如果您上传或更新同一文件,则会在 blob 中覆盖文件。

有关使用 Logic 应用程序合并文件的更多信息,您可以参考此 BLOG

更新的答案

在比较字符串/文件名之前,您可以在 'Condition' 连接器之前使用 'Compose' 并将字符串转换为小写。

toLower(base64ToString(triggerOutputs()['headers']['x-ms-file-name-encoded']))