Как я могу загрузить файл CSV в виде потока, используя HttpClient в качестве параметра тела? - PullRequest
0 голосов
/ 22 мая 2019

Я пытался преобразовать 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 location

Проблема в том, что я все еще нахожу ноль для указанного ниже параметра файла контроллера,

Контроллер:

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

1 Ответ

0 голосов
/ 23 мая 2019

Благодаря вкладу каждого, приведенный ниже код решил проблему.

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);
    }
...