Неверный экземпляр HttpContent. Он не имеет заголовок типа "multipart" с параметром "граница"
Я пишу веб-api, у которых есть метод post, принимающий файлы из загруженного из пользовательского интерфейса.
public async Task<List<string>> PostAsync()
{
if (Request.Content.IsMimeMultipartContent("form-data"))
{
string uploadPath = HttpContext.Current.Server.MapPath("~/uploads");
var streamProvider = new MyStreamProvider(uploadPath);
await Request.Content.ReadAsMultipartAsync(streamProvider);
return streamProvider.FileData
.Select(file => new FileInfo(file.LocalFileName))
.Select(fi => "File uploaded as " + fi.FullName + " (" + fi.Length + " bytes)")
.ToList();
}
else
{
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.BadRequest, "Invalid Request!");
throw new HttpResponseException(response);
}
}
тогда я отправляю запрос на вышеуказанное действие почтальоном.
Я установил заголовок типа контента в multipart/form-data
но при выполнении действия происходит ошибка.
здесь есть сообщение об ошибке:
"Предоставлен недопустимый экземпляр HttpContent. Он не имеет заголовок типа" multipart "с параметром 'border'.\r\nПараметр: content"
я пошел в заголовки почтового корреспондента, но я обнаружил, что тип содержимого заголовка запроса был установлен в application-json.
![Postman screenshot]()
Кто-нибудь может мне помочь?
Ответы
Ответ 1
Вы просматриваете заголовок ответа, который является json-форматом, и это нормально для вас.
Ваша настоящая проблема связана с запросом почтальона, поэтому просто удалите запись "Content-Type: multipart/form-data" из заголовка запроса.
Достаточно загрузить файл в виде данных формы и отправить запрос.
Посмотрите, что произойдет, когда вы вручную устанавливаете Content-Type или нет:
![введите описание изображения здесь]()
Почтальон знает, как установить тип контента и границу, так как вы устанавливаете только тип содержимого
Ответ 2
Первый. У почтальона есть ошибка при обработке запросов на основе файлов.
Вы можете попробовать добавить это к своему WebApiConfig.cs
, это сработало для меня:
GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();