使用 Azure Function .NET5 和 HttpRequestData,如何处理文件上传(表单数据)?

tha*_*ssd 1 .net c# azure-functions .net-5

较旧的 Azure 函数可以访问HttpRequest,这允许我们通过req.Form.Files等访问上传​​的文件。

HttpRequestData而是使用隔离的 .NET5 Azure 函数,它不提供对Form. 如何提取发布到该功能的上传文件?

Jas*_*Pan 5

您可以添加<PackageReference Include="HttpMultipartParser" Version="5.0.0" />.csproj 文件。并使用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;
    }
Run Code Online (Sandbox Code Playgroud)

  • @thankyoussd https://github.com/Azure/azure-functions-dotnet-worker/issues/366 (2认同)