从 C# 将 IFormFile 发布到 webAPI
Posting IFormFile to webAPI from c#
我有一个 Web API 方法,它接受小型 class 结构中的 IFormFile 变量列表,以将文件上传到存储帐户。
public class FileInputModel
{
public int ScenarioId { get; set; }
public IList<IFormFile> UploadFiles { get; set; }
}
[HttpPost("UploadFiles")]
public async Task<IActionResult> UploadForm([FromForm] FileInputModel files)
{
//UploadLogic
}
这非常适合使用 Postman 的 https post,但我似乎不太明白如何使用 C# 程序来做到这一点,我直接写给 link api。到目前为止,我有一些代码可以将 FileStreamResult 变量转换为 IformFile,然后发送 post 请求,但我不知道如何从我电脑上的文件中获取 FileStreamResult。这是我目前使用的方法。
var json = JsonSerializer.Serialize(FileInputModel);
StringContent data = new StringContent(json, Encoding.UTF8, "application/json");
try
{
using HttpClient client = new HttpClient();
HttpResponseMessage response = await client.PostAsync(url, data);
return response;
}
我太在意后端的 IFormFile 方面了,而实际上该函数只是打开流,然后在其他函数中使用。有了这个,我通过简单地在前端连接 c# 程序中使用文件流并将信息作为 MultipartFormDataContent 类型发送来解决它。
using (var client = new HttpClient())
{
using (var content = new MultipartFormDataContent())
{
var fileName = Path.GetFileName(filePath);
var fileStream = System.IO.File.Open(filePath, FileMode.Open);
content.Add(new StreamContent(fileStream), "file", fileName);
var requestUri = baseURL;
var request = new HttpRequestMessage(HttpMethod.Post, requestUri) { Content = content };
var result = await client.SendAsync(request);
return;
}
}
我有一个 Web API 方法,它接受小型 class 结构中的 IFormFile 变量列表,以将文件上传到存储帐户。
public class FileInputModel
{
public int ScenarioId { get; set; }
public IList<IFormFile> UploadFiles { get; set; }
}
[HttpPost("UploadFiles")]
public async Task<IActionResult> UploadForm([FromForm] FileInputModel files)
{
//UploadLogic
}
这非常适合使用 Postman 的 https post,但我似乎不太明白如何使用 C# 程序来做到这一点,我直接写给 link api。到目前为止,我有一些代码可以将 FileStreamResult 变量转换为 IformFile,然后发送 post 请求,但我不知道如何从我电脑上的文件中获取 FileStreamResult。这是我目前使用的方法。
var json = JsonSerializer.Serialize(FileInputModel);
StringContent data = new StringContent(json, Encoding.UTF8, "application/json");
try
{
using HttpClient client = new HttpClient();
HttpResponseMessage response = await client.PostAsync(url, data);
return response;
}
我太在意后端的 IFormFile 方面了,而实际上该函数只是打开流,然后在其他函数中使用。有了这个,我通过简单地在前端连接 c# 程序中使用文件流并将信息作为 MultipartFormDataContent 类型发送来解决它。
using (var client = new HttpClient())
{
using (var content = new MultipartFormDataContent())
{
var fileName = Path.GetFileName(filePath);
var fileStream = System.IO.File.Open(filePath, FileMode.Open);
content.Add(new StreamContent(fileStream), "file", fileName);
var requestUri = baseURL;
var request = new HttpRequestMessage(HttpMethod.Post, requestUri) { Content = content };
var result = await client.SendAsync(request);
return;
}
}