【发布时间】:2020-02-01 11:44:16
【问题描述】:
在 Python 中,我将图像转换为字节。然后,像调用 Azure 认知服务时一样,我将字节传递给 Azure HTTP 触发器函数应用程序端点 URL(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 认知服务是如何做到的!
提前致谢。
【问题讨论】:
标签: c# python byte azure-functions azureportal