【问题标题】:Using Azure Function .NET5 and HttpRequestData, how to handle file upload (form data)?使用 Azure Function .NET5 和 HttpRequestData,如何处理文件上传(表单数据)?
【发布时间】:2021-06-02 23:45:17
【问题描述】:

较旧的 Azure Function 提供对 HttpRequest 的访问权限,这允许我们通过 req.Form.Files 等访问上传的文件。

隔离的 .NET5 Azure 函数改用 HttpRequestData,它不授予对 Form 的访问权限。如何提取上传到函数的上传文件?

【问题讨论】:

  • 没有对 multipart/form-data 的内置支持。为什么?不知道。似乎 .NET5 的 Azure Functions 可能有点为时过早。您可以从question and answer 拼凑出一个解决方案。
  • @Andy 使用HttpMultipartParser.ParseAsync(req.Body) 可以获取文件。
  • eh -- 这不是微软维护的。那是第3方。我不知道你为什么要参加可能在 3 个月内对这种事情失去兴趣的第三者。我的评论仍然有效:它不是内置的......你必须实现它......不知何故

标签: c# .net azure-functions .net-5


【解决方案1】:

您可以在 .csproj 文件中添加 <PackageReference Include="HttpMultipartParser" Version="5.0.0" />。并使用var parsedFormBody = MultipartFormDataParser.ParseAsync(req.Body);,您将获得您的文件。

在邮递员中。

调试时

下面是我的测试代码。

[Function("test")]
public static HttpResponseData Run1([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequestData req,
        FunctionContext executionContext
        )
    {
        // get query params
        var testvalue=executionContext.BindingContext.BindingData["testparams"];
        // get form-body        
        var parsedFormBody =  MultipartFormDataParser.ParseAsync(req.Body);
        var file=parsedFormBody.Result.Files[0];

        var response = req.CreateResponse(HttpStatusCode.OK);
        response.Headers.Add("Content-Type", "text/plain; charset=utf-8");

        response.WriteString("Welcome to Azure Functions!");

        return response;
    }

【讨论】:

  • 哇,谢谢你拯救了我一整天的挣扎。我在哪里可以找到这方面的任何相关文档?像我这样的新开发人员应该如何解决这样的问题!
  • 我正在使用相同的方法,但对于较大的 PDF 文件,我的函数主机在没有调用触发器的情况下崩溃。有什么想法吗?
  • @RainerSchuster 我认为文件大小有限制,特别是对于消费层的功能。
猜你喜欢
  • 2021-12-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-08
  • 1970-01-01
  • 1970-01-01
  • 2020-11-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多