我有一个Web API方法,它接受一个小类结构中的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#程序直接链接到这个api。到目前为止,我已经获得了一些代码来将FileStreamResult变量转换为IformFile,然后发送一个post请求,但是我不知道如何从我pc上的文件中获取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;
}
发布于 2021-11-15 06:01:12
我太关注后端的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;
}
}
https://stackoverflow.com/questions/69885759
复制相似问题