[ASP.NET MVC] 画像を返す(ファイルを返す)

DevelopmentASP.NET,Visual Basic

プロ生ちゃんダミー画像生成サービス など画像を生成するジェネレーター系などのサービスで、コントローラーで画像を返す方法です。画像以外にも応用できます。

サーバーにある画像ファイルを返す

FileStreamResult を使って MemoryStream の内容を返します。

https://gist.github.com/jz5/6854282a2a6a1ba476d3

個の例では、 /Image にアクセスすると App_Data/images/sample.png の内容をそのまま返します。ジェネレーター系は、生成した Bitmap や加工をした Bitmap を返せば OK ですね。

他サイトからのアクセスを拒否する

自サイトでのみ利用する API 的なものであれば、気休め程度ですが Referrer が自サイトでない場合は、拒否するといったこともできます。

https://gist.github.com/jz5/d165b995884aaa781e3a

Web から読み込んだデータをそのまま返す

指定した URL から読み込んだデータをそのまま返す例です。この場合、Response.OutputStream に直接、リクエストのレスポンス結果を指定しています。

https://gist.github.com/jz5/b6f680309c04a80b1786

このような処理は、HTML5 の Canvas に Web から読み取った画像を描画して、さらに保存する場合など、セキュリティ例外を回避するために必要だったりします。timg: Twitter 画像検索・画像一覧 & まとめてダウンロード で利用しています。

DevelopmentASP.NET,Visual Basic

Posted by jz5