首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将IFormFile从c#发布到webAPI

将IFormFile从c#发布到webAPI
EN

Stack Overflow用户
提问于 2021-11-08 15:13:42
回答 1查看 48关注 0票数 1

我有一个Web API方法,它接受一个小类结构中的IFormFile变量列表,将文件上传到存储帐户。

代码语言:javascript
复制
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。以下是我到目前为止所使用的方法。

代码语言:javascript
复制
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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-15 14:01:12

我太关注后端的IFormFile方面了,而实际上,函数只是打开流,然后在进一步的函数中使用。有了这个,我只需在前端使用一个文件流,连接c#程序,并以MultipartFormDataContent类型发送信息,就解决了这个问题。

代码语言:javascript
复制
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;
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69885759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档