2011-12-29 9 views
1

"File-Stream"が有効なデータベースがあります。私は "ファイルストリーム"属性を持つ列を持つテーブルを作成し、テーブルに正常に行を記録することができます。だから、私が持っているものは、 "ファイルストリーム"にBLOBとして保存されている画像です。ファイルストリームデータメソッドへのアクセス(T-SQLおよびマネージAPI)

私の問題は何ですか?

私はこの画像を入手して、古典的なaspを使用してWebブラウザで表示する必要があります(私はこのサーバ言語では初心者ですが、asp.netを使用することはできません)。私は多くを検索して読み込みました(asp.netでこれを行うことについての多くの情報があり、古典aspでこれを行う方法を示すものはほとんどありません)。

「TSQLを使用したFILESTREAMデータへのアクセス」および「管理APIを使用したFILESTREAMデータへのアクセス」

私が理解して使用できる最初のものです。 2番目の(vb.netコードの例があります)私はできませんでした。

‘Create a connection to the database 

Dim ConStr As String 

ConStr = "Data Source=JACOBXPS\katmaifs;Initial Catalog=NorthPole" & _ 

    ";Integrated Security=True" 

Dim con As New SqlConnection(ConStr) 

con.Open() 



'Retrieve the FilePath() of the image file 

Dim sqlCommand As New SqlCommand() 

sqlCommand.Connection = con 

sqlCommand.CommandText = "SELECT ItemImage.PathName() AS PathName " + _ 

        "FROM items WHERE ItemNumber = 'MS1001'" 

Dim filePath As String = sqlCommand.ExecuteScalar() 



'Obtain a Transaction Context 

Dim transaction As SqlTransaction = con.BeginTransaction("ItemTran") 

sqlCommand.Transaction = transaction 

sqlCommand.CommandText = "SELECT GET_FILESTREAM_TRANSACTION_CONTEXT()" 

Dim txContext As Byte() = sqlCommand.ExecuteScalar() 



' Open and read file using SqlFileStream Class 

Dim sqlFileStream As New SqlFileStream(filePath, txContext, FileAccess.Read) 

Dim buffer As Byte() = New Byte(sqlFileStream.Length) {} 

sqlFileStream.Read(buffer, 0, buffer.Length) 



'Bind the image data to an image control 

Dim ms As MemoryStream = New MemoryStream(buffer) 

Dim bmp As Bitmap = New Bitmap(ms) 

ItemImage.Image = bmp 



'Cleanup 

sqlFileStream.Close() 

sqlCommand.Transaction.Commit() 

con.Close() 

は、私は、従来のASPでこれを変換することができませんでしたが、同じ記事で、私はもっとイライラする何かを読んでいます:

この

はコードです

TSQLを使用してFILESTREAMデータへのアクセスSQL Serverは> FILESTREAMデータファイルの内容を読み取り、それをクライアントに提供します。 SQL Serverメモリは、データファイルの内容を読み込むために使用されます。 Win32 Streamingを使用してFILESTREAMデータにアクセスすると、SQL Serverメモリが使用されません。さらに、アプリケーションは、NTファイルシステムの>ストリーミング機能を利用することができます。

私の本当の問題は何ですか?

古典的なaspで使用できるvb.netのコード変換を行うことができますか?可能であれば、私は "ファイルストリーム"を使用して未来を有効にし、ウェブにデータを表示したいと考えています。デスクトップアプリケーションを使用すると遅くなりますか?

私はかなり混乱していますし、読んだ記事の回答やリンクに感謝します。

答えて

2

質問に少し混乱しますが、あなたがしようとしているのは、データベースからBLOBデータをWebページ上のImageとして表示する場合、このような "image.asp"ページが必要です。 ..

SQL = "SELECT FILE_NAME,IMAGE_FILE FROM tblImages WHERE ID = " & request("id") 
Set rs =db.Execute(SQL) 
if not(rs.eof) then 

    Response.ContentType = "application/octet-stream" 
    Response.AddHeader "Content-Disposition", "attachment;filename=" & rs("FILE_NAME") 
    Response.BinaryWrite rs("IMAGE_FILE") 
else 
    response.Write("No such record found in the database at row " & request("id")) 
end if 
関連する問題