2011-01-30 13 views
1

質問の背後にある考え方は、自分のイメージがデータベースからイメージを取得するカスタムのhttphandlerからデータを読み込んでいることです。私は、ファイルをアップロードするコントロールを使用して、置換ファイルを "書き込み"ハンドラに "ポスト"して、データベースを更新したいと考えています。その後、元の "read"ハンドラにjavascriptを使ってイメージをリフレッシュすることができます。c#とカスタムHTTPハンドラを使用してバイナリイメージをデータベースに書き込むことはできますか?

これは可能ですか?編集

は、以下の回答いただきありがとうございますが、私は十分に明確だったと思ういけない場合、私は現在に画像を置く標準のポストバックモデルのアップロードプロセスを持って質問...

データベースとそれを読み取るためのカスタムハンドラが含まれています。私が知りたいのは、アップロードを実行するためのカスタムHTTPハンドラを作成して、アップロードハンドラを非同期に呼び出すことができ、イメージsrcをリフレッシュしてデータベースから取り戻すことです。

私はそれが非同期で表示させるためにIFrameのアプローチを使用しています現時点では、私はちょうど短いそうで、本当に

答えて

3

はいこれは一般的な使用例です。 Microsoftは、ファイルアップロードハンドラを作成するための良いチュートリアルhereを持っています。ファイルアップロードハンドラから、にパイプすることができるバイナリストリームを取得して、UPDATEデータベースに使用することができます。また、正しいコンテンツタイプ(image/jpeg)を書き込むカスタムHTTP Handlerを作成することもできます。 HTTPハンドラが設定されている場合、そのURLの識別子(つまり、<img src="http://localhost/GetImage.ashx?id=123456" />)を使用してURLにアクセスできるようになるため、JavaScriptを使用してこれを更新できます。

Hereは、このプロセス全体に関する素晴らしいチュートリアルです。

0

のベストプラクティスを知りたいです。

アップロードコントロールを使用して、ファイルシステムの既知の場所に書き込むか、アップロードコントロールから受け取った情報をバイト配列またはImage(System.Drawing。 Image)オブジェクトをメモリに保存することができます。

これで完了したら、SQLを実行してデータベース内のイメージを更新します。それが成功した場合は、ajaxを使用してイメージをページにリロードすることができます。私が見ることができ、これと

唯一の問題は、次のとおりです。

  • どのくらいの画像が、これは、エンドユーザーのために問題となるのアップロードに時間がかかりますか?
  • 何かが失敗したり、ユーザーがページを離れるケースを処理しますか?

画像を実際に保存する前に実際に画像を表示しておき、時間を節約してからサーバー側ですべての保存を行うことができます。

+0

System.Drawing名前空間の先頭にある警告に注意してください。 http://msdn.microsoft.com/en-us/library/xs6ftd89.aspx。 System.Drawingを使用したパフォーマンスとスケーリングに関する明確な課題。 – stephbu

+0

@stephbu良い点、Byte []はここで最も速くなるでしょう。 – msarchet

関連する問題