かなり単純な質問ですが、データベースに varbinary として保存されている画像があり、これらの画像を Web サイトに表示するのではなく、これらの画像へのリンクを提供したいと考えています。ユーザーがリンクをクリックすると、画像をダウンロードできるはずです。
3 に答える
リクエストに応じて画像が提供されます。
<img src="?" /> <!-- what goes here? -->
これらの画像のリクエストを受信するには、 HTTPハンドラーを作成する必要があります。
ハンドラーは、特定のURLで使用可能な実行可能ファイルであり、要求に応答できます。この場合、画像のバイナリデータを提供します。ASPXページは有効なハンドラーですが、画像にはより効率的なハンドラータイプがあります。
<img src="MyHandler.aspx?imageId=123" />
ハンドラーはいくつかのことを行う必要があります。
- IDが有効であり、呼び出し元に権限があることを検証します(必要な場合)
- データベースから画像を取得します
- 適切な応答ヘッダーを設定する
Response.BinaryWrite()
バイナリデータをクライアントに送信するために使用します。
ASP.Net MVCを使用している場合は、コントローラーをハンドラーとして使用できることに注意してください。
別の方法は、バイトをbase 64エンコードし、それらを画像タグに直接埋め込むことです。
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot">
これは、小さな画像の場合や、複数のリクエストの費用が非常に高い場合に便利な手法です。
参照: http: //en.wikipedia.org/wiki/Data_URI_scheme
もっと読む:
image-id を受け取って画像を返すページを作成する必要があります。
あなたはこの質問を考えるかもしれません:
コード ビハインドで asp:image のデータ テーブルから画像を表示する
同様の問題があり、その答えが私の質問を解決しました。それに加えて、Telerik の binaryimage コンポーネントを使用できます。
http://www.telerik.com/products/aspnet-ajax/binaryimage.aspx