【问题标题】:Upload an image to Azure Functions using HttpRequest from Postman使用 Postman 的 HttpRequest 将图像上传到 Azure Functions
【发布时间】:2018-08-05 11:38:42
【问题描述】:

我很难使用HttpRequest 将图像上传到 Azure Functions。我专门使用HttpRequest,因为这是 VS 模板使用的。我已经使用 Postman 将问题简化为一个简单的测试用例。

功能:

[FunctionName("Function1")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "post")]HttpRequest req)
{
    return new CreatedResult("", req.Form.Files[0].OpenReadStream());
}

邮递员:

Method: POST
URL: [Function URL]
Headers:
    Content-Type: multipart/form-data
Body: binary with image selected

所以应该发生的是,我选择了要上传的文件,单击“发送”将其上传到 Azure 函数,它应该会自动返回流并在 Postman 响应中显示图片。

但是当我从 Postman 调用它时,它会在尝试读取流时抛出异常:

“System.IO.InvalidDataException:缺少内容类型边界。\r\n 在 Microsoft.AspNetCore.Http.Features.FormFeature.GetBoundary(MediaTypeHeaderValue contentType, Int32 lengthLimit)\r\n 在 Microsoft.AspNetCore.Http。 Features.FormFeature.InnerReadFormAsync(CancellationToken cancelToken)\r\n 在 Microsoft.AspNetCore.Http.Features.FormFeature.ReadForm()\r\n 在 Microsoft.AspNetCore.Http.Internal.DefaultHttpRequest.get_Form()\r\n 在[我的代码]"

现在,如果我将其切换为使用 HttpRequestMessage 像旧的 Azure Function 模板并使用 req.Content.ReadAsStreamAsync(),它就像一个魅力。

但是由于新模板使用HttpRequest,所以这个问题主要关注HttpRequest的使用及其正确使用。那么如何使用HttpRequest 来让它工作呢?

【问题讨论】:

    标签: azure asp.net-core azure-functions


    【解决方案1】:

    Postman 提供了一种上传表单数据的方式,选择类型为文件并上传图片。(无需设置标题)

    在 Fiddler 中查看这个请求头,Postman 自动设置边界。

    content-type: multipart/form-data; boundary=--------------------------970956809380964389175281
    

    如果我们上传带有内容类型头的二进制文件,头是Content-Type: multipart/form-data,所以我们得到了缺少边界的错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-06
      • 2020-01-11
      • 2021-05-10
      • 2017-04-26
      • 1970-01-01
      • 2020-01-09
      • 2021-03-15
      相关资源
      最近更新 更多