2009-04-22 8 views
0

現在、SQL Server 2005 DBにイメージを送信する必要があるasp.netプログラムにパッチを適用しています。 asp:fileuploadコントロールを使用するとうまくいきますが、ユーザーがイメージを削除すると、コードビハインドで「空」と表示されているイメージのイメージに置き換えられます。vbでイメージを開いてデータベースに送信 - Asp.Net

私はvbのテキストファイルを開く方法、使用方法、保存方法はわかっていますが、イメージ/バイナリファイルを開く方法については、どこでも同じような方法で情報を見つけることができません。更新クエリのパラメータ。

以下は、fileuploadコントロールからのファイルの使用方法の例です。

 

      Dim t_id As Integer = Convert.ToInt32(Request.QueryString("id")) 

      open() 

      Dim picture As New SqlParameter("@picture", pictureFileUpload.FileBytes) 
      Dim id As New SqlParameter("@id", t_id) 

      myCommand = New SqlCommand("spChangeImage") 
      myCommand.CommandType = CommandType.StoredProcedure 
      myCommand.Connection = conn 

      myCommand.Parameters.Add(picture) 
      myCommand.Parameters.Add(id) 

      myCommand.ExecuteNonQuery() 
      close() 

は今、私は同様の方法で画像ファイルを開いて、それをパラメータとして設定する方法が必要ですが、私はそれをやって行く方法として何の手がかりをしたん。すべての検索結果は、HTMLでイメージを開いて表示することに焦点を当てています。クエリで使用するにはバイナリが必要です。私はbinaryreaderを使用しようとしていますが、私は実際にどのように実際にファイルをマップするのか分かりませんでした。

ありがとうございました!

答えて

1

個人的には、ユーザーが値を削除したときに私はこのイメージをデータベースに保存しません。私はnullに列を設定します。画像を書き込むときに、カラムがヌルであることが検出されると、、次にが読み込まれ、レスポンスに書き込まれます。これを行うと、ローカルバッファに何かを累積する必要はなく、読み取ったときに応答に各バッファを書き込むことができます。 FileInfo.Lengthを使用して、レスポンスのコンテンツ長を判断できます。

イメージをDBに格納することをお勧めする場合は、FileInfo.Lengthを使用してイメージを保持する必要があるバッファのサイズを決定することもできます。この長さのバイトをバッファに読み込むには、BinaryReaderを使用します。バッファはSQLコマンドのパラメータになります。

+0

最初は、画像がないと全く新しい次元の問題が発生したので、私はこれを行うことができないと思った。しかし、同僚はDB接続の直後のソースで "NULL"ファイルを置き換える方法も同様の考え方で示していたので、残りのプログラムはeverythignが意図したとおりに動いていると考えました。プログラムはもともと失われた画像を処理するために作られていませんでした。 ;)これをありがとう。 – Zan

関連する問題