В моем проекте ASP.NET MVC я пытаюсь отправить изображение из метода действия контроллера в метод контроллера API. План заключается в том, чтобы использовать этот API для других клиентов, чтобы использовать для загрузки изображений.Опубликовать MultipartFormDataContent от метода действия контроллера до метода WebApi Post
Я могу успешно ударить по методу API Post из метода Action Control, но не могу передать объект изображения.
Вот мой HomeController.cs
Upload
Действие Метод
[HttpPost]
public async Task<ActionResult> Upload(FormCollection formCollection)
{
var baseUri = "http://localhost/api/Process";
HttpPostedFileBase file = Request?.Files[0];
if (file == null || (file.ContentLength <= 0) || string.IsNullOrEmpty(file.FileName))
return new EmptyResult();
string fileName = file.FileName;
byte[] fileBytes = new byte[file.ContentLength];
HttpContent stringContent = new StringContent(fileName);
HttpContent fileStreamContent = new StreamContent(file.InputStream);
HttpContent bytesContent = new ByteArrayContent(fileBytes);
using (var formDataContent = new MultipartFormDataContent())
{
formDataContent.Add(stringContent, "fileName", fileName);
formDataContent.Add(fileStreamContent, "inputStream", fileName);
formDataContent.Add(bytesContent, "fileBytes", fileName);
using (var httpClient = new HttpClient())
{
formDataContent.Headers.ContentType =
MediaTypeHeaderValue.Parse("application/x-www-form-urlencoded");
var response = await httpClient.PostAsync(baseUri, formDataContent);
var content = await response.Content.ReadAsStringAsync();
//Handle the response
}
}
return View("Result");
}
В моем контроллере процесса, который наследует от ApiController
, я следующее сообщения метод
[HttpPost]
public async Task<string> Post([FromBody]MultipartFormDataContent formDataContent)
{
Task<string> imageContent = Request.Content.ReadAsStringAsync();
string body = imageContent.Result;
ImageResponse imageResponse = null;
//.................
//.................
return someValue
}
Здесь параметр formDataContent
всегда утративший Request.Content.ReadAsStringAsync()
является пусто
вы попробовать 'Request.Content.ReadAsMultipartAsync' ? – Jag