У меня есть API для системы, написанной с использованием ASP.NET Web Api, и я пытаюсь расширить ее, чтобы позволить загружать изображения. Я сделал несколько поисковых запросов и нашел, как рекомендуется принимать файлы с помощью MultpartMemoryStreamProvider и некоторые методы асинхронизации, но мой ожидание в ReadAsMultipartAsync никогда не возвращается.
Вот код:
[HttpPost]
public async Task<HttpResponseMessage> LowResImage(int id)
{
if (!Request.Content.IsMimeMultipartContent())
{
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}
var provider = new MultipartMemoryStreamProvider();
try
{
await Request.Content.ReadAsMultipartAsync(provider);
foreach (var item in provider.Contents)
{
if (item.Headers.ContentDisposition.FileName != null)
{
}
}
return Request.CreateResponse(HttpStatusCode.OK);
}
catch (System.Exception e)
{
return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);
}
}
Я могу пройти весь путь до:
await Request.Content.ReadAsMultipartAsync(provider);
после чего он никогда не завершится.
В чем причина моего ожидания никогда не возвращается?
Update
Я пытаюсь выполнить POST для этого действия с помощью curl, команда выглядит следующим образом:
C:\cURL>curl -i -F [email protected]:\LowResExample.jpg http://localhost:8000/Api/Photos/89/LowResImage
Я также попытался использовать следующий html для POST для действия, а также то же самое:
<form method="POST" action="http://localhost:8000/Api/Photos/89/LowResImage" enctype="multipart/form-data">
<input type="file" name="fileupload"/>
<input type="submit" name="submit"/>
</form>