File POST возвращает ошибку 415

Я пытаюсь добавить функцию загрузки файлов в свой проект ASP.NET Core 2. Я получаю этот ответ при отправке вызова POST в мою службу WEBApi:

Status Code: 415; Unsupported Media Type

Действие моего контроллера выглядит так:

    [HttpPost]
    [Route("Upload")]
    [Authorize]
    public Guid Post([FromBody]IFormFile file)
    {
        Stream readStream = file.OpenReadStream();

        byte[] fileData = new byte[file.Length];

        readStream.Read(fileData, 0, fileData.Length);

        return _printServiceManager.SaveFile(fileData);
    }

Я вызываю его либо из своего клиентского приложения Angular 6, либо из Postman, но ничего не меняется. Я нашел здесь существующий вопрос по этой теме, но данное решение состоит в том, чтобы изменить мой заголовок на «Content-Type: application / json». Без изменений. Затем я попытался найти другую подсказку в Интернете, но единственная подсказка, которую я нашел, говорит мне снова изменить заголовок типа контента следующим образом: «Accept: application / json». Тоже не работает.

Может быть, я спрашиваю о чем-то простом или о том, что я должен знать как веб-разработчик, но у меня карьера, ориентированная на бэкенд, и я пытаюсь понять, что не так с моим кодом. Так что, если у вас есть полный ресурс по этой теме, поделитесь им!

Пытался снова изменить тип содержимого, как было предложено, но получил тот же результат:
File POST возвращает ошибку 415

Заранее спасибо.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
8
0
6 126
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Content-Type должен быть multipart / form-data

Ответ принят как подходящий

По определению IFormFile не может быть получен с использованием FromBody. IFormFile работает только с запросами в кодировке multipart/form-data, тогда как FromBody работает только с телами запросов JSON или XML.

В результате у вас есть два пути:

  1. Отправьте файл как multipart/form-data (т. Е. Традиционный пост). Вместо этого используйте [FromForm] (или просто пренебрегайте атрибутом).

  2. Фактически отправьте файл как JSON, и в этом случае вам нужно будет выполнить привязку к классу, чтобы представить объект JSON, который вы публикуете. Данные файла должны быть строкой в ​​кодировке base64 в вашем объекте JSON, и затем вы привяжете ее к свойству типа byte[]. ASP.NET Core позаботится о декодировании строки base64 в массив байтов.

Другие вопросы по теме