【问题标题】:How to send File from Logic App to function App?如何将文件从逻辑应用程序发送到功能应用程序?
【发布时间】:2018-06-01 06:47:29
【问题描述】:

我有一个逻辑应用程序,它可以读取邮件内容及其附件。我需要将文件/文件内容(首选文件)发送到函数 App。

后期函数App与第三方API交互,需要将相同的文件传递给该API。

NB--> 我能够在逻辑应用程序中获取文件字节。但是通过Json结构将Bytes传递给函数App时,Json反序列化显示问题@function App end。

【问题讨论】:

  • 您是如何解决问题的?有什么可以接受的答案吗?

标签: azure azure-functions azure-logic-apps


【解决方案1】:

您可以将文件从逻辑应用发送到 azure 函数作为附件内容。

Azure函数端可以直接读取如下:

#r "Newtonsoft.Json"

using System;
using System.Net;
using Newtonsoft.Json;
using System.IO;
using System.Globalization;

public static async Task<object> Run(HttpRequestMessage req, TraceWriter log)
    {
        try
        {
            log.Info($" my function was triggered!");

            string jsonContent = await req.Content.ReadAsStringAsync();
            dynamic data = JsonConvert.DeserializeObject(jsonContent);

            if (data.fileName == null && string.IsNullOrWhiteSpace(data.fileName))
            {
                return req.CreateResponse(HttpStatusCode.BadRequest, new
                {
                    error = "Invalid json parameters!"
                });
            }
            string fileName = data.fileName;
            var fileData = data.fileContent;
            string val = fileData.ToObject<string>();

            var base64EncodedBytes = System.Convert.FromBase64String(val);
            var result = System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
            // log.Info($"file data val : "+result);
            StringReader stringReader = new StringReader(result);
            //rest you can do yourself
        }
        catch (Exception ex)
        {

        }
    }

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    我会使用 Azure Blob 存储作为逻辑应用和函数应用之间的接口。

    根据this documentation,可以在逻辑应用中使用 Azure Blob 存储标准连接器。可以使用Create Blob 操作,它需要您可以检索的文件字节。

    函数应用可以作为触发器绑定到特定的 Azure Blob 存储容器。 Here is an example:

    [FunctionName("BlobTrigger")]        
    public static void Run([BlobTrigger("blobcontainer/{name}", Connection = "StorageConnectionAppSetting")] Stream myBlob, string name, TraceWriter log)
    {
        log.Info($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
    }
    

    【讨论】:

    • 我猜到了相同的过程,但我的疑问是我应该如何将附件从电子邮件传输到 Blob?
    • 到目前为止,我的快乐之路是,在 3rd Party API 中,我们可以选择传递 Stream Bytes[],然后它可以将文件内容向前传输。但是问题是如何将文件内容从逻辑应用程序发送到函数应用程序?反序列化的时候显示Error & Base64 Encoding 我们在Logic App中怎么办?
    • 您已经写过“我能够获取逻辑应用程序中的文件字节”。将此字节数组传递给Create Blob 操作有什么问题?可能需要更详细的建议,您应该发布逻辑应用的相关部分。
    猜你喜欢
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    • 1970-01-01
    • 2017-06-16
    相关资源
    最近更新 更多