日期:2014-05-17  浏览次数:20882 次

如何向数据库中存储图片并且如何把图片读取出来
各位高手帮帮我吧!谢谢啦!我现在需要把图片存储到ACCESS数据库中,应该如何实现,并且如何把图片从数据库中读取出来,我需要详细的源代码!

------解决方案--------------------
使用ADODB的stream对象接收图片文件,然后用recordset对象的appendchunk方法将保存在stream对象中的文件写入数据库,这可以实现一个表单同时上传所有控件值到数据库,相当简单。
至于从数据中读出图片数据并显示到网页中,可用下面的方法:
<img src= "showimg.asp ">
其中showimg.asp是专门用于显示图片字段数据的,而且必须使用response.binarywrite来读取数据库中的图片数据。另外用一个ASP程序来显示同一记录的其它字段值。
------解决方案--------------------
表单文件
up_input.asp


<form action= "up_img.asp?id= <%=id%> " method= "post " enctype= "multipart/form-data " name= "form1 ">
<table width= "400 " border= "0 " align= "center " cellpadding= "0 " cellspacing= "1 ">
<tr>
<td width= "76 " class= "black "> 图片: </td>
<td align= "center " valign= "bottom ">

<input name= "file " type= "file " class= "bottom1 " size= "20 " maxlength= "50 ">
<input name= "Submit " type= "submit " class= "bottom1 " value= "添加 ">
</td>
</tr>
</table>
</form>

图片上传文件
up_img.asp

<%
id =request( "id ")
FormSize = Request.TotalBytes '得到数据
FormData = Request.BinaryRead( FormSize )

function ImageUp(formsize,formdata) '这个函数的功能是截取其中的图像部分。
bncrlf=chrb(13) & chrb(10) '做成函数后。以后你可以自己随意使用了。
divider=leftb(formdata,instrb(formdata,bncrlf)-1)
datastart=instrb(formdata,bncrlf&bncrlf)+4
dataend=instrb(datastart+1,formdata,divider)-datastart
imageup=midb(formdata,datastart,dataend)
end function

Image=ImageUp (FormSize,Formdata) '这里就是图像部分了。
set rs=server.CreateObject( "adodb.recordset ")
sql= "select * from "&database& " where id= "&id
rs.Open sql,conn,1,3
'因为表单二在表单一提交的过程中下提交了。

rs( "pic ").appendchunk Image '所以这里是添加。
rs.Update
%>


获取图片:
<img src= "show_img.asp?id= <%=id%> ">

show_img.asp

<%
id=Request( "id ")
set rs=server.CreateObject( "adodb.recordset ")
sql= "SELECT * FROM "&database& " where id= "&id
rs.Open sql,conn,1,3
response.contenttype= "image/gif "
Response.BinaryWrite rs( "pic3 ")
%>