【问题标题】:azure logic app how to check a specific file in a sftp is changedazure logic app 如何检查 sftp 中的特定文件已更改
【发布时间】:2018-12-21 08:24:07
【问题描述】:

需要检查一个 sftp 站点,并且会有多个文件上传到一个文件夹。我正在编写逻辑应用程序来处理文件。每个逻辑应用都将处理一个文件,因为每种文件格式都不同。问题是 sftp 触发器只能检测到文件夹中任何文件的更改。因此,如果文件更改,该文件的逻辑应用程序将运行,但其他逻辑应用程序也会运行,这是不需要的。

我尝试过使用重复触发器,然后是 sftp 通过路径操作获取文件内容,但如果指定的文件不存在,这将失败,我想要的是逻辑应用程序只是退出或最好根本不被触发。

如果更新/上传了特定文件,如何仅触发逻辑应用?

【问题讨论】:

  • 你为什么不根据你的文件扩展名设置if,else这样的条件呢?这样您的特定逻辑只有在满足这些条件时才能运行。如果我想详细说明作为答案,请告诉我..
  • 都是csv文件。我已经尝试在 sftp 触发器之后放置一个条件并放置文件名 = '目标文件'。第一个问题是它永远不会评估为真。另一个问题是我希望其余步骤仅遵循真分支,但在逻辑应用程序中,我似乎只能在真或假框内放置一个动作。
  • 为什么不检查文件扩展名而不是文件名的情况? (假设您有多个具有不同扩展名的文件)
  • 都是csv文件。
  • 这个问题你解决了吗?

标签: azure azure-logic-apps


【解决方案1】:

在您的逻辑应用程序上,您实际上可以使用动态内容和表达式来执行以下操作

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

希望对你有帮助!

【讨论】:

    【解决方案2】:

    我使用条件if file name is equal to abc.txt 尝试了我的 Azure Web FTP 站点并得到相同的InputExpression result 始终为假。

    然后我检查Run Details发现OUTPUTS中的文件名不是abc.txt,它是用base64加密的。

    在我的测试中,abc.txt 被加密为YWJjLnR4dA==,然后我在 Logic App 条件下将文件名更改为YWJjLnR4dA==,它可以工作。

    所以你可以去检查你的运行历史来获取文件名,或者你可以去这个siteBase64加密你的文件名。

    希望对您有所帮助,如果您还有其他问题,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-21
      • 2021-03-15
      • 2017-12-07
      • 2019-08-31
      • 1970-01-01
      相关资源
      最近更新 更多