postman 通过HttpClient Post请求c#发送多个文件

mklgxw1f  于 2023-01-02  发布在  Postman
关注(0)|答案(1)|浏览(286)

我目前正在使用一个API,我必须发送文件,这要归功于http post协议。
使用postman,每件事都能正常工作,我可以发送一个可以包含多个文件的文件数组:

为此,我在我的C#应用程序中使用了HttpClient,但是我只能发送一个文件,而且我的主体必须包含表单数据主体,所以我创建了一个MultipartFormDataContent对象来发送我的文件。

public async Task<SubmitIdentityResults> SubmitIdentity(Guid companyId, DocumentTypes docType, SubmitIdentityParameters submitIdentityParameters)
{
    try
    {
        var accesstoken = await _authTokenFromClientID.GetAccessToken();
        var client = _httpClientFactory.CreateClient("MyClient");
        client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("bearer", accesstoken);

        MultipartFormDataContent form = new MultipartFormDataContent();
        form.Add(new StreamContent(submitIdentityParameters.File!), "Files", submitIdentityParameters.FileName!);

        var response = await client.PostAsync($"api/Document/{docType.ToString()}", form);

        if (response.StatusCode == System.Net.HttpStatusCode.NoContent)
        {
            return default(SubmitIdentityResults)!;
        }
        
        return await response.Content.ReadFromJsonAsync<SubmitIdentityResults>() ?? default(SubmitIdentityResults)!;

    }
    catch (Exception)
    {
        throw;
    }
}

有没有办法在c#中用httpclient和mulitipartformdata开发同样的行为?

l0oc07j2

l0oc07j21#

我认为你应该传递一个数组SubmitIdentityParameters[] submitIdentityParameters,并像这样做。

foreach (var file in submitIdentityParameters)
{
    form.Add(new StreamContent(file.File!), "Files", file.FileName!);
}

相关问题