首页 > 解决方案 > 如何使用 HttpClient 作为正文参数将 CSV 文件作为流上传?

问题描述

我试图使用以下代码将 csv 文件转换为 contentStream。

private const string ResourceFolder = "TestData\\";
private HttpContent _form;

      public void SendFile(string resource, string fileName)
    {
        _form = string.IsNullOrWhiteSpace(fileName)
            ? _form = new StringContent(string.Empty)
            : _form = new StreamContent(File.OpenRead($"{ResourceFolder}{fileName}"));

        var content = new MultipartFormDataContent();
           content.Add(_form);
        _form.Headers.ContentType = new MediaTypeHeaderValue("application/csv");

        WhenThePostRequestExecutesWithContent(resource, content);

    }

    public async void WhenThePostRequestExecutesWithContent(string resource, HttpContent content)
    {
        ResponseMessage = await HttpClient.PostAsync(resource, content);
    }

我正在使用.Net core 2.1,它在File位置的最后一行给出以下错误

问题是我仍然为以下控制器文件参数找到 null,

控制器:

public async Task<IActionResult> SeedData(IFormFile file)
{
    var result = await _seedDataService.SeedData(file);
    return Ok(new { IsUploadSuccesful = result});
}

标签: c#streamhttpclient

解决方案


感谢大家的贡献,下面的代码解决了这个问题。

private const string ResourceFolder = "TestData\\";
private HttpContent _form;

     public void AttachedRatesFile(string fileName)
        {
            _form = string.IsNullOrWhiteSpace(fileName)
                ? _form = new StringContent(string.Empty)
                : _form = new StreamContent(File.OpenRead($"{ResourceFolder}{fileName}"));

            _content = new MultipartFormDataContent();
            _content.Add(_form, "file", fileName);
            _form.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");

        }


    public async void WhenThePostRequestExecutesWithContent(string resource, HttpContent content)
    {
        ResponseMessage = await HttpClient.PostAsync(resource, content);
    }

推荐阅读