[ASP.NET MVC] 画像を返す(ファイルを返す)
プロ生ちゃんダミー画像生成サービス など画像を生成するジェネレーター系などのサービスで、コントローラーで画像を返す方法です。画像以外にも応用できます。
サーバーにある画像ファイルを返す
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 画像検索・画像一覧 & まとめてダウンロード で利用しています。