Skip to content Skip to sidebar Skip to footer

How To Retrieve Bytes Data From Request Body In Azure Function App

In Python, I converted an image into bytes. Then, I pass the bytes to an Azure HTTP Trigger function app endpoint URL (Azure Portal) like this, just like usual when calling Azure c

Solution 1:

Do not use ReadToEndAsync(), instead, use MemoryStream(). ReadToEndAsync() is used to read string buffer which can mess up the incoming bytes data. Use CopyToAsync() and then convert the memory stream into bytes array to preserve the incoming bytes data.

publicstaticasync Task<HttpResponseMessage> Run(HttpRequest req, ILogger log)
{
    //string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
    MemoryStream ms = new MemoryStream(); 
    await req.Body.CopyToAsync(ms);
    byte[] imageBytes = ms.ToArray();
    log.LogInformation(imageBytes.Length.ToString());


    // ignore below (not related)string finalString = "Upload succeeded";
    Returner returnerObj = new Returner();
    returnerObj.returnString = finalString;
    var jsonToReturn = JsonConvert.SerializeObject(returnerObj);

    returnnew HttpResponseMessage(HttpStatusCode.OK) {
        Content = new StringContent(jsonToReturn, Encoding.UTF8, "application/json")
    };
}

publicclassReturner
{
    publicstring returnString { get; set; }
}

Reference/Inspired by: https://weblog.west-wind.com/posts/2017/sep/14/accepting-raw-request-body-content-in-aspnet-core-api-controllers

Post a Comment for "How To Retrieve Bytes Data From Request Body In Azure Function App"