【お題】引っかけ問題(締め切り10月27日(日)23時)

ASP+SQLServer7.0でデータベースに画像を保存し、それを呼び出して表示できるようにしたいのですが
具体的にどうすればいいのかが分かりません。
フォルダに画像を保存することは出来ています。
image型にバイナリデータを保存するのではないかと何となく考えてはいるのですが良く分かりません。
よろしくお願いします。

A 回答 (5件)

basp21をinstallし


1、バイナリアップロード
2、採りこみ(指定fieldへ)

basp21の入手先は下記のサイトへ
http://www.hi-ho.ne.jp/babaq/basp21.html

参考URL:http://www.hi-ho.ne.jp/babaq/basp21.html

この回答への補足

回答ありがとうございます。
BASP21のメソッドFormBinaryを使っていると書いていたのですがそれとは意味がちがうのでしょうか?

補足日時:2006/04/19 22:16
    • good
    • 0

VB.NET,ADO.NETで記述されたサンプルですね。

当初の記載したサンプルと基本的には同様の操作となります。
ご希望のSQL分でハンドリングするのであれば、前述のWRITEXTを利用せざるえないと思います。
後、私の情報が古いところもあり、KBで
http://support.microsoft.com/kb/258038/ja
Streamオブジェクトを利用したADOのサンプルがありました。
こちらご覧ください。StreamオブジェクトにはWriteメソッドがありこちらでByte配列を渡せますので、うまくいくと思いますよ。

この回答への補足

「途中経過」
とりあえずDBへ書き込む事ができました。
後は、正しく書き込まれているか表示してみようと思います。

<%@ LANGUAGE = VBSCRIPT %>
<%
Const adOpenKeyset = 1
Const adLockOptimistic = 3
Const adTypeBinary=1

set cn = Server.CreateObject("ADODB.Connection")
cn.Open "Provider=SQLOLEDB;User ID=sa;Password='';Data Source=athlon2500;Initial Catalog=test1"

set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "select MAX(IMAGE_ID) AS ID from test1",cn,adOpenKeyset, adLockOptimistic

if rs.EOF then
id=1
else
id=rs("ID")+1
end if

br = Request.BinaryRead(Request.TotalBytes)
set bobj = Server.CreateObject("basp21")
bPicture = bobj.FormBinary(br,"File1")

set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = cn
cmd.CommandText = "INSERT INTO test1(IMAGE_ID,IMAGE) VALUES(" & id & ",?)"
cmd.Parameters(0).Value = bPicture
cmd.Execute

setcmd = Nothing
rs.Close
cn.Close
%>
<html>
<body>
<%
set mstream = Server.CreateObject("ADODB.Stream")
mstream.Type = adTypeBinary
mstream.Open
mstream.LoadFromFile Server.MapPath("sample.jpg")
Response.BinaryWrite(mstream.Read)
mstream.Close
%>
</body>
</html>
---------------------------------------------
参考URL:
http://www.shoeisha.com/mag/windev/pdf/870511/wi …
--------------------------------------------

補足日時:2006/02/19 19:08
    • good
    • 0

T-SQLでとなると、ちょっと経験はありませんが、確か、WRITETEXTがText、Image型のポインタへの書き込みに利用できるのでT-SQLのヘルプで確認してみてください。

この回答への補足

ASPで使用できるのかわかりませんが、FileStream オブジェクトとバイト配列を使用して、Microsoft SQL Server からファイルに BLOB データを読み取る方法および書き込む方法を見つけました。
これをSQL文で使用できればと思うのですが・・・。

http://support.microsoft.com/default.aspx?scid=k …

補足日時:2006/02/17 09:43
    • good
    • 0

VBSではなく、VBのサンプルになりますが、


Private Sub SaveToDB()
Dim bytBLOB() As Byte
Dim strImagePath As String
Dim intNum As Integer

'Save the record
strImagePath = Trim$(txtImagePath.Text)
With rs
.Fields("ImageTitle") = _
Trim$(txtImageTitle.Text)

If (optImageType(0).Value) Then
'Save as file pointer
.Fields("ImagePath") = strImagePath
Else
If (txtImagePath.Text <> "") Then
'Open the picture file
intNum = FreeFile
Open strImagePath For Binary As #intNum
ReDim bytBLOB (FileLen(strImagePath))
'Read data and close file
Get #intNum, , bytBLOB
Close #1

'Store the BLOB
.Fields("ImagePath") = ""
.Fields("ImageBLOB").AppendChunk bytBLOB
End If
End If
.Update
End With
End Sub

参考URL:http://msdn.microsoft.com/library/default.asp?ur …

この回答への補足

出来ればSQL文の中で使用したいと思っているのですが無理でしょうか。
(例)
INSERT INTO TABLE(IMAGE_ID,IMAGE) VALUES(No,Binary)

補足日時:2006/02/16 09:32
    • good
    • 0

あまり時間がないので、簡単に。


image型のフィールドにバイナリデータを保存するということで可能です。ADOにはBLOBを操作するためにAppendChunk、GetChunkというメソッドがありますのでこちらをヘルプで調べてみてください。参考にVBのFormアプリから、該当の操作をするサンプルをのせておきます。

参考URL:http://msdn.microsoft.com/library/default.asp?ur …

この回答への補足

HTMLのフォーム(ENCTYPE="multipart/form-data")で入力された画像をBASP21のメソッドFormBinaryを使って1バイトの配列にセットしています。

bPicture = bobj.FormBinary(br,"File1")

この後、AppendChunkでデータベースに保存すると思うのですが、使い方が理解できませんでした。
サンプルコードなどありましたら紹介していただけないでしょうか。

補足日時:2006/02/15 19:52
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報