.net core HttpClient从Request.Form.NET核心复制数据

.net core HttpClient从Request.Form.NET核心复制数据,.net-core,asp.net-core-webapi,dotnet-httpclient,.net Core,Asp.net Core Webapi,Dotnet Httpclient,我有一个带有文件的表单数据的POST查询,我需要将相同的数据发送到另一个POST请求。 我将用于这个HttpClient类 是否有方法复制所有请求。形成数据并将其插入新请求?或者我需要添加每个参数 我的意思是这样的: var httpClient = new HttpClient(); var httpResponseMessage = await httpClient.PostAsync("some_url", Request.Form); 是否有方法复制所有请求。表单数据并将其插入新请求?

我有一个带有文件的表单数据的POST查询,我需要将相同的数据发送到另一个POST请求。 我将用于这个HttpClient类

是否有方法复制所有
请求。形成
数据并将其插入新请求?或者我需要添加每个参数

我的意思是这样的:

var httpClient = new HttpClient();
var httpResponseMessage = await httpClient.PostAsync("some_url", Request.Form);
是否有方法复制所有请求。表单数据并将其插入新请求?或者我需要添加每个参数

您需要添加每个参数,如下所示:

ProjectA中的模型:

public class FormData
{
    public int Id { get; set; }
    public IFormFile File { get; set; }
    public string Name { get; set; }
}
@model FormData
<form asp-action="Post" enctype="multipart/form-data">
    <div>
        Id:<input asp-for="Id"/>
    </div>
    <div>
        Name:<input asp-for="Name"/>
    </div>
    <div>
        FIle:<input asp-for="File" />
    </div>
    <div>
        <input type="submit" value="create" />
    </div>
</form>
[HttpPost]
public async Task<IActionResult> Post(FormData formData)
{
    HttpClient client = new HttpClient();
    // var formData = HttpContext.Request.Form;
    client.BaseAddress = new Uri("http://localhost:63331");//your applicationUrl
    client.DefaultRequestHeaders.Accept.Clear();

    var multiContent = new MultipartFormDataContent();

    var file = formData.File;
    if (file != null)
    {
        var fileStreamContent = new StreamContent(file.OpenReadStream());
        multiContent.Add(fileStreamContent, "File", file.FileName);
    }

    multiContent.Add(new StringContent(formData.Id.ToString()), "id");
    multiContent.Add(new StringContent(formData.Name.ToString()), "name");


    var response = await client.PostAsync("/api/values", multiContent);
    //do your stuff...
    return Ok();
}
在ProjectA中查看:

public class FormData
{
    public int Id { get; set; }
    public IFormFile File { get; set; }
    public string Name { get; set; }
}
@model FormData
<form asp-action="Post" enctype="multipart/form-data">
    <div>
        Id:<input asp-for="Id"/>
    </div>
    <div>
        Name:<input asp-for="Name"/>
    </div>
    <div>
        FIle:<input asp-for="File" />
    </div>
    <div>
        <input type="submit" value="create" />
    </div>
</form>
[HttpPost]
public async Task<IActionResult> Post(FormData formData)
{
    HttpClient client = new HttpClient();
    // var formData = HttpContext.Request.Form;
    client.BaseAddress = new Uri("http://localhost:63331");//your applicationUrl
    client.DefaultRequestHeaders.Accept.Clear();

    var multiContent = new MultipartFormDataContent();

    var file = formData.File;
    if (file != null)
    {
        var fileStreamContent = new StreamContent(file.OpenReadStream());
        multiContent.Add(fileStreamContent, "File", file.FileName);
    }

    multiContent.Add(new StringContent(formData.Id.ToString()), "id");
    multiContent.Add(new StringContent(formData.Name.ToString()), "name");


    var response = await client.PostAsync("/api/values", multiContent);
    //do your stuff...
    return Ok();
}
ProjectB中的控制器:

public class FormDataModel
{
    public int Id { get; set; }
    public IFormFile File { get; set; }
    public string Name { get; set; }
}
[HttpPost]
public void Post([FromForm]FormDataModel model)
{
      //...
}
结果: