如何从 Azure Function App 中的请求正文检索字节数据

2024-01-01

在 Python 中,我将图像转换为字节。然后,我将字节传递到 Azure HTTP 触发器函数应用端点 URL(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 认知服务是如何做到这一点的!

提前致谢。


不使用ReadToEndAsync(),而是使用MemoryStream(). ReadToEndAsync()用于读取字符串缓冲区,这可能会弄乱传入的字节数据。使用CopyToAsync()然后将内存流转换为字节数组以保存传入的字节数据。

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; }
}

参考/灵感来源:https://weblog.west-wind.com/posts/2017/sep/14/accepting-raw-request-body-content-in-aspnet-core-api-controllers https://weblog.west-wind.com/posts/2017/sep/14/accepting-raw-request-body-content-in-aspnet-core-api-controllers

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 Azure Function App 中的请求正文检索字节数据 的相关文章

随机推荐

  • 如何通过输入流手动向 cmd.exe 进程提供命令?

    这个问题听起来有点晦涩难懂 这是一个稍长的版本 我需要让主循环等待用户输入 并且还需要运行一个进程并等待来自用户输入要发送到的流的输入 全文 我正在构建一个 Cmd 模拟器 起初一切看起来都很好 用户输入命令 它会回显到输出区域 进行处理
  • 服务器端和胖客户端 Web 应用程序的文件夹结构

    目前 我使用 Node js 作为后端 使用 extjs 或骨干作为客户端 现在我对文件夹结构完全感到困惑 Using express我的文件夹结构如下 appname controllers models appmodel js publ
  • laravel:如何获取与数据透视表中另一列相关的列(3列数据透视表)

    我不知道如何表达这个问题 但我需要执行以下操作 我有一个包含三列的数据透视表user id account id role id 所以在我的数据库中如果我有这些行account role user pivot account id user
  • oracle错误:没有足够的值

    我有一个表donor master create table donor master donor id number 10 primary key not null dob date not null age number 3 not n
  • 绑定在 WPF Datagrid 第二行标题中不起作用

    My Xaml
  • 禁用特征中的 FactoryGirl 关联

    在 Rails 应用程序中 我使用 FactoryGirl 定义一个通用工厂以及几个更具体的特征 一般情况和除一个特征之外的所有特征都具有特定的关联 但我想定义一个不创建 构建该关联的特征 我可以使用after设置关联的回调id to ni
  • 将因子转换为 R 中的日期/时间

    这是我的数据框中包含的信息 minuteofday factor w 89501 levels 2013 06 01 08 07 00 dDdt num 7 8564 2 318 minutes POSIXlt format NA NA N
  • 在 C# 中序列化匿名委托

    我试图确定使用以下序列化代理来启用匿名函数 委托 lambda 的序列化可能会导致哪些问题 see http msdn microsoft com msdnmag issues 02 09 net S3 class NonSerializa
  • Android TextField:以编程方式设置焦点+软输入

    在我看来 我有一个搜索 EditText 我想以编程方式触发该字段上的单击事件的行为 即将焦点集中到文本字段并在必要时显示软键盘 如果没有可用的硬键盘 I tried field requestFocus 该字段实际上获得焦点 但不显示软键
  • html 元素 (div) 的完整高度,包括边框、内边距和边距?

    我需要 div 的完整高度 我目前正在使用 document getElementById measureTool offsetHeight offsetHeight 返回元素的高度 包括边框和填充 如果有 但不包括边距 但是 div 内的
  • Int32.Equals 与 '==' 运算符

    我环顾四周 但似乎没有人问过这个问题 所以就这样吧 我正在开发一个自定义类 它将具有IEquatable界面 因此我正在制作自己的Equals方法 它看起来是这样的 public bool Equals QueryFilter qfilte
  • C++“new”运算符是如何实现的

    Class B B b new B default constructor B b1 new B 10 constructor which takes an argument B int x 但是 如果我们想编写一个自定义版本new 语法是
  • 使用现有私钥创建 CSR

    我想做的是 创建一个 CSR 并使用受密码保护的私钥 密钥 在 OpenSSL 中 我可以创建一个带有密码的私钥 如下所示 openssl genrsa des3 out privkey pem 2048 有什么方法可以使用我刚刚创建的密钥
  • 使用 C# 调用 php 脚本 (Unity)

    我对 Unity 和 PHP 都很陌生 目前我正在开发一个项目 可以使用 PHP 将数据从 MySQL 数据库解析到 Unity 我最初想尝试启用一种方法 用户可以更改 php 脚本并使其能够选择不同的数据表 但是有人建议我列出 php 脚
  • 如何从 nginx 发出相对 URL 重定向?

    如何在 nginx 中配置重定向以相对重定向到特定路径来响应某个 url The Nginx 文档 https www nginx com resources wiki start topics tutorials config pitfa
  • Android中的动态相对布局

    我正在尝试将两个图像放在一起 我可以让它与 xml 文件一起正常工作 但我想动态地执行此操作 ctdeasyone 是一个透明图像 所以这工作正常
  • Git推送错误:无法创建'.git/refs/remotes/jr/master.lock':文件存在

    这不是重复的 我看过这个堆栈溢出帖子 https stackoverflow com questions 8500089 fatal unable to create refs heads master lock file exists f
  • Knockoutjs 验证 areSame 或 MustMatch 示例

    我正在尝试使用 GitHub 上的 Knockoutjs 验证插件 大部分似乎工作得很好 但是当我尝试使用扩展验证 MustEqual password confirm password 时 它似乎没有做任何事情 我缺少什么 我非常想学习这
  • 如何在SQLite中进行递归查询?

    如果我的数据结构是这样的 parentA parentAA parentAAA childA 如果我能得到 childA name 我怎样才能知道所有父级的名字直到顶层 所以它会像这样 gt parentA parentAA parentA
  • 如何从 Azure Function App 中的请求正文检索字节数据

    在 Python 中 我将图像转换为字节 然后 我将字节传递到 Azure HTTP 触发器函数应用端点 URL Azure 门户 就像调用 Azure 认知服务时一样 image path r C Users User Desktop b