Как определить StatusCode: 415, ReasonPhrase: «Неподдерживаемый тип носителя»? - PullRequest
0 голосов
/ 23 апреля 2020

Как вы публикуете файл с помощью HttpClient? Это не может быть так сложно, не так ли?

Я отправляю файл из клиента форм Windows на ASP. Net API веб-сайта Core 2.2 (не WebApi)

Файл может быть любым, word, pdf , image, video et c ... Файл может быть размером до 500 МБ, и мои JSON методы не будут отправлять более 25 МБ

Независимо от того, что я делаю, я получаю

StatusCode: 415, ReasonPhrase: 'Unsupported Media Type'

Я не могу понять, что не так, как гонг. Я понятия не имею, чего не хватает. Я сузил это до

            string filepath = file;
            string filename = Path.GetFileName(file);

            MultipartFormDataContent content = new MultipartFormDataContent();

            var fileContent = new StreamContent(File.OpenRead(filepath));

            fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data") { FileName = $"\"{filename}\"" };

            content.Add(fileContent);

            HttpResponseMessage response = await _httpClient.PostAsync(serviceMethod, content);

Все примеры, которые я прочитал (их множество), большинство, кажется, чувствуют JSON, и я могу сделать это в пики. Остальные скажут вам, что читать и искать, но я все еще потерян, я просто хочу опубликовать файл. У меня есть готовый серверный код для go.

    [HttpPost]
    public async Task<JsonResult> UploadFile([FromForm]IFormFile result)        

Я продолжу читать, но любая помощь будет высоко ценится.

Хорошо, я стал немного ближе. Я обновил свой код (см. Выше), и теперь вызывается контроллер моего API, но теперь result равен null

1 Ответ

0 голосов
/ 24 апреля 2020

Попробуйте изменить код, как показано:

public async Task<IActionResult> PostFile()
{
        string filepath =file;
        string filename = Path.GetFileName(file);

        MultipartFormDataContent content = new MultipartFormDataContent();

        var fileContent = new StreamContent(System.IO.File.OpenRead(filepath));

        content.Add(fileContent, "result", filename);

        HttpResponseMessage response = await _httpClient.PostAsync(serviceMethod, content);
 }

    [HttpPost]
    public async Task<JsonResult> UploadFile(IFormFile result)        

Результат enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...