如何从Logic App发送文件到功能应用程序?

时间:2018-06-01 06:47:30

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

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

以后的功能App与第三方API交互,需要将相同的文件传递给该API。

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

2 个答案:

答案 0 :(得分:2)

您可以将文件从逻辑应用发送到azure功能作为附件内容。enter image description here

在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)
        {

        }
    }

希望这会有所帮助。

答案 1 :(得分:1)

我会将Azure Blob Storage用作Logic App和Function App之间的接口。

根据this documentation,在Logic App上可以使用Azure Blob存储标准连接器。可以使用Create Blob操作,该操作需要您可以检索的文件字节。

可以将Function App绑定为特定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");
}