我在发布后一小时左右想出了以下内容。 目前还没有很多例子,所以我把它留下了。
我正在尝试在Azure Logic App中设置一个新连接器,以便从FTP站点获取文件并将它们移动到Dropbox文件夹。
我甚至没有获得Dropbox部分,虽然它找到了FTP站点然后删除了文件。
我有一个名为testing off的测试目录: ftp://eek.myftpsite.com/testing/
我显然不理解这个过程的基本内容。 我附上了ftp连接器及其动作的图片。 以下是触发器的代码:
"operation": "TriggerOnFileAvailable",
"parameters": {
"triggerState": "@coalesce(triggers()?.outputs?.body?['triggerState'], '')",
"FolderPath": "testing",
"FileMask": "CSV*",
"FileType": "Text"
行动的代码(这部分原来不需要):
"operation": "GetFile",
"parameters": {
"FilePath": "@{triggers().outputs.body.FilePath}",
"FileType": "Text"
},
"authentication": {
"type": "Raw",
"scheme": "Zumo",
当我在ftp文件夹中删除名为CSV_test2.txt且文本中包含一行文本的文件时,在短暂的位之后将其删除 - 正如预期的那样。 如果我转到触发器历史记录,它会显示它已成功触发。 触发器的输出看起来也是正确的(事实证明):
"body": {
"FileName": "CSV_test2.txt",
"FolderPath": "testing",
"FilePath": "testing\\CSV_test2.txt",
"ServerAddress": "eek.myftpsite.com",
"Content": "This is the data in the test file.",
"ContentTransferEncoding": "None",
"triggerState": "CSV_test2.txt"
}
但是,如果我转到它显示为失败的操作(因为我错误的下一步,它应该是一个需要文件路径的东西,比如dropbox)。 操作的输入显示:
"operation": "GetFile",
"parameters": {
"FilePath": "testing\\CSV_test2.txt",
"FileType": "Text"
},
"apiVersion": "2015-01-14",
"authentication": {
"scheme": "Zumo",
"type": "Raw"
}
这似乎对我来说是正确的(不是)。 输出显示:
},
"body": {
"status": 404,
"source": "https://ftpconnectora4cf805ee5114235ad1c43445a153673.azurewebsites.net/file/testing/CSV_test2.txt?FileType=Text",
"message": "Path does not exist on FTP Server. The remote server returned an error: (550) File unavailable (e.g., file not found, no access)."
}
我已经尝试了我能想到的所有组合,包括只是硬编码路径和文件名 - 都无济于事。 我真的很想尝试让这个新项目工作,而不是“老”的方式。
欢迎任何建议, 乔
答案 0 :(得分:1)
我误解了它是如何运作的。 我以为你设置了一个FTP连接器,然后监视新文件,然后你设置另一个FTP动作来获取每个新文件。 结果我有点过分思考。
不,只是直接输出输出:
它的代码是:
"operation": "UploadFile",
"parameters": {
"FilePath": "@{triggers().outputs.body.FilePath}",
"content": {
"Content": "@{triggers().outputs.body.Content}",
"ContentTransferEncoding": "None"
},
"overwrite": true
非常酷......我正在离开我的糊涂,希望它可以帮助其他人。这都是很新的东西,但非常令人兴奋。
谢谢,
乔