代码之家  ›  专栏  ›  技术社区  ›  thankyoussd Svyatoslav Danyliv

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

  •  0
  • thankyoussd Svyatoslav Danyliv  · 技术社区  · 3 年前

    较旧的Azure功能允许访问 HttpRequest ,这允许我们通过以下方式访问上传的文件 req.Form.Files 等。

    孤立的。NET5 Azure功能使用 HttpRequestData 相反,它不允许访问 Form .如何提取上传到该功能的文件?

    0 回复  |  直到 3 年前
        1
  •  20
  •   Jason Pan    3 年前

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

    在邮递员。

    enter image description here

    调试时

    enter image description here

    下面是我的测试代码。

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