asp.net core web apiを使用して、コントローラーアクションメソッドがjpegイメージストリーム。
現在の実装では、ブラウザはjson文字列のみを表示します。私の期待は、ブラウザで画像を表示することです。
chrome開発者ツールを使用してデバッグしている間、コンテンツタイプはまだ
Content-Type:application/json; charset=utf-8
私のコードでは手動でコンテンツタイプを「image/jpeg」に設定していますが、応答ヘッダーで返されます。
ソリューションを探しています私のWeb APIは次のとおりです
[HttpGet]
public async Task<HttpResponseMessage> Get()
{
var image = System.IO.File.OpenRead("C:\\test\random_image.jpeg");
var stream = new MemoryStream();
image.CopyTo(stream);
stream.Position = 0;
result.Content = new StreamContent(image);
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
result.Content.Headers.ContentDisposition.FileName = "random_image.jpeg";
result.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg");
result.Content.Headers.ContentLength = stream.Length;
return result;
}
クリーンソリューション use FilestreamResult
!!
_[HttpGet]
public async Task<IActionResult> Get()
{
var image = System.IO.File.OpenRead("C:\\test\\random_image.jpeg");
return File(image, "image/jpeg");
}
_
説明:
ASP.NET Coreでは、コントローラー内でbuilt-inFile()
メソッドを使用する必要があります。これにより、コンテンツタイプを手動で設定できます。
ASP.NET Web API 2での使用に慣れていたように、HttpResponseMessage
を作成して返さないでください。何もせず、エラーもスローしません。
PhysicalFile は単純な構文でAsp.Net Core WebAPIからファイルを返すのに役立ちます
[HttpGet]
public IActionResult Get(int imageId)
{
return new PhysicalFile(@"C:\test.jpg", "image/jpeg");
}