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.
public static async 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);
return new HttpResponseMessage(HttpStatusCode.OK) {
Content = new StringContent(jsonToReturn, Encoding.UTF8, "application/json")
};
}
public class Returner
{
public string 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"