Как отправить файл из приложения логики в приложение? - PullRequest
0 голосов
/ 01 июня 2018

У меня есть приложение логики, которое читает содержимое почты вместе с вложением.Мне нужно отправить файл / содержимое файла (файл предпочтительнее) в функцию приложения.

Позже функция App взаимодействует со сторонним API, необходимо передать тот же файл этому API.

NB -> Я могу получить байты файла в приложении логики.Но при передаче байтов в функцию App через структуру Json, десериализация Json показывает выпуск @function App end.

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

вы можете отправить файл из приложения логики в функцию 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)
        {

        }
    }

Надеюсь, это поможет.

0 голосов
/ 01 июня 2018

Я бы использовал хранилище BLOB-объектов Azure в качестве интерфейса между приложением логики и приложением-функцией.

В приложении логики можно использовать стандартный соединитель хранилища BLOB-объектов Azure, согласно этой документации .Можно использовать действие Create Blob, которое ожидает байты файла, которые вы можете извлечь.

Приложение-функция может быть связано как триггер с конкретным контейнером хранилища BLOB-объектов Azure. Вот пример :

[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");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...