web-dev-qa-db-ja.com

Asp.Net Core WebAPIからjpegイメージを返す

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;
    }

enter image description here

34

クリーンソリューション 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を作成して返さないでください。何もせず、エラーもスローしません。

56

PhysicalFile は単純な構文でAsp.Net Core WebAPIからファイルを返すのに役立ちます

    [HttpGet]
    public IActionResult Get(int imageId)
    {            
       return new PhysicalFile(@"C:\test.jpg", "image/jpeg");
    }
4
Antoine V