私のASP.NET MVCプロジェクトでは、コントローラアクションメソッドからAPIコントローラメソッドに画像をポストしようとしています。このAPIを他のクライアントに活用して、画像をアップロードすることを計画することです。Controller ActionメソッドからWebApi PostメソッドへのMultipartFormDataContentの投稿
Controller ActionメソッドからAPI Postメソッドを正常に表示できますが、イメージオブジェクトを渡すことができません。ここで
は私HomeController.cs
Upload
アクションメソッドApiController
から継承している私のプロセスコントローラで
[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");
}
で、私は次のポスト方法
[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
は常にnullで、Request.Content.ReadAsStringAsync()
です空の
あなたは 'Request.Content.ReadAsMultipartAsync'を試してみました? – Jag