簡體   English   中英

從 C# 將 IFormFile 發布到 webAPI

[英]Posting IFormFile to webAPI from c#

我有一個 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 帖子非常有效,但我似乎無法弄清楚如何使用我正在編寫的 C# 程序來直接鏈接到這個 api。 到目前為止,我已經有一些代碼可以將 FileStreamResult 變量轉換為 IformFile,然后發送一個發布請求,但我不知道如何從我電腦上的文件中獲取 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;
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM