在 SQL Server 中有一款数据类型 Image , 除了可以储存图档外它还可以储存大型的二进制数据档, 今天我们就来讨论如何将图文件存入去数据库.
第一步
创造数据表
在这个例咱要用到 SQL 内建的 Pubs 数据库来作测试, 请打开 QA 然后执行下底的创造数据表指令, 所要建立的数据表中一个字段是纪录档案的 Content-Type, 另一个则是储存图档
Use Pubs
Create Table ImgData
(
ImgID Int Identity Not Null Primary Key,
ContentType VarChar(20),
FileData Image
)
HTML 窗体部分
现在来看看 HTML 窗体的部分, 因为是用做档案上传因此用
enctype=\"multipart/form-data\" , 不过要注意的是一但使用了 form-data 后窗体数据的取得也就不能再用 Request.Form, 因为这不是这篇文章的重点所以在这就不多做解释, 请将下底的码存成 insert.htm
程序代码
搁来看麦 ASP 的部分, 请将下底的码存成 insert.asp
<%
Response.Buffer = True
ConnStr = \"Provider=SQLOLEDB;\" _
& \"Data Source=你的计算机名称;\" _
& \"Initial Catalog=Pubs;\" _
& \"User Id=sa;\" _
& \"Password=你的密码\"
'建立 oUpload 上传对象
Set oUpload = Server.CreateObject(\"Dundas.Upload.2\")
'在使用 oUpload 集合 (Collection) 前, 要先呼叫 Save 或 SaveToMemory 方法
oUpload.SaveToMemory
Set oRs = Server.CreateObject(\"Adodb.Recordset\")
oRs.Open \"ImgData\
oRs.AddNew
'呼叫 oUpload 对象的 ContentType, Binary 属性, 已取得我们要的资料
oRs(\"ContentType\").Value = oUpload.Files(0).ContentType
oRs(\"FileData\").Value = oUpload.Files(0).Binary
oRs.Update
oRs.Close
Set oRs = Nothing
%>
顶高的程序假设你只上传一个档案, 所以使用 oUpload.Files(0), 如果你一次上传一个以上的档案, 你可以将程序小改为
...
oRs.Open ...
For Each oFile In oUpload.Files
If InStr(1,oFile.ContentType,\"image\") <> 0 Then
oRs.AddNew
oRs(\"ContentType\").Value = oFile.ContentType
oRs(\"imgdata\").Value = oFile.Binary
End If
Next
oRs.Update
...
现在你可以利用浏览器开启 Insert.htm 来进行上传图文件到数据库的动作, 执行完后你可以 Select ImgData 数据表, 应该是出现一笔数据, 不过 FileData 字段应该是能懂的吧!
因篇幅问题不能全部显示,请点此查看更多更全内容