В Python я конвертировал изображение в байты.Затем я передаю байты URL-адресу конечной точки приложения-функции триггера Azure (портал Azure), как обычно, когда вызывает когнитивные службы Azure .
image_path = r"C:\Users\User\Desktop\bicycle.jpg"
image_data = open(image_path, "rb").read()
print(len(image_data)) # print length to compare later
url = "https://xxxx.azurewebsites.net/api/HTTPTrigger1........."
headers = {'Content-Type': 'application/octet-stream'}
response = requests.post(url, headers=headers,
data=image_data)
Однако у меня естьне знаю, как получить байтовые данные в приложении функций на портале Azure.Я попробовал следующее (C #), но это не сработало.Кажется, ReadToEndAsync()
не предназначен для чтения байтов данных из тела запроса?Или это из-за HttpRequest
?
public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
{
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
byte[] imageBytes = Encoding.ASCII.GetBytes(requestBody);
log.LogInformation(imageBytes.Length.ToString());
// the length logged is totally not the same with len(image_data) in Python
//ignore the following lines (not related)
return name != null
? (ActionResult)new OkObjectResult("OK")
: new BadRequestObjectResult("Please pass a name on the query string or in the request body");
}
Есть идеи по этому поводу?Я знаю обходной путь с использованием строки base64, но мне просто интересно, как это делают когнитивные службы Azure!
Заранее спасибо.