
用来获取上一个页面传 递过来的数据一般是使用Request对象。同样的,我们也可以使用Request对象 来获取上传上来的文件数据,使用的方法是Request.BinaryRead()。
要从数据库中读出来图片的数据显示到网页上面要用到的方法是:Request.BinaryWrite()。
二、在得到了图片的数据,要保存到数据库中的时候, 不可以直接使用Insert语句对数据库进行 *** 作,而是要使用ADO的 AppendChunk方法。
同样的,读出数据库中的图片数据,要使用GetChunk方 法。
各个方法的具体语法如下:
* Request.BinaryRead语法:
variant = Request.BinaryRead(count)
参数
variant
返回值保存着从客户端读取到数据。
count
指明要从客户端读取的数据量大小,这个值小于或者等于使用方法
Request.TotalBytes得到的数据量。
* Request.BinaryWrite语法:
Request.BinaryWrite data
参数
data
要写入到客户端浏览器中的数据包。
* Request.TotalBytes语法:
variant = Request.TotalBytes
参数
variant
返回从客户端读取到数据量的字节数。
* AppendChunk语法
将数据追加到大型文本、二进制数据 Field 或 Parameter 对象。
object.AppendChunk Data
参数
object Field 或 Parameter 对象
Data 变体型,包含追加到对象中的数据。
说明
使用 Field 或 Parameter 对象的 AppendChunk 方法可将长二进制或字符数
据填写到对象中。在系统内存有限的情况下,可以使用 AppendChunk 方法对长
整型值进行部分而非全部的 *** 作。
* GetChunk语法
返回大型文本或二进制数据 Field 对象的全部或部分内容 。
variable = field.GetChunk( Size )
返回值
返回变体型。
参数
Size 长整型表达式,等于所要检索的字节或字符数。
说明
<%
dim conn
dim rs
dim rs2
set conn=server.createobject("adodb.connection")
conn.connectionstring="Provider = Microsoft.Jet.OLEDB.4.0Data Source="&server.mapPath("db.mdb")
conn.open
formsize=request.totalbytes
if formsize<>0 then '这里只判断了是否等于0,等于0就说明没有传过来数据。以后可以要多做点判断,比如限制图片大小的时候要判断一下。
formdata=request.binaryread(formsize)
bncrlf=chrB(13)&chrB(10)
divider=leftB(formdata,clng(instrb(formdata,bncrlf))-1)
datastart=instrb(formdata,bncrlf&bncrlf)+4
dataend=instrb(datastart+1,formdata,divider)-datastart
mydata=midb(formdata,datastart,dataend) '这里也要检测一下,就是检测这个数据里面是不是有病毒词汇之类的,这个可以在网上查一下病毒里面可能出现的词语,如果有这些词语,直接在这里就把这个mydata销毁,然后response.redirect "xxx.asp",有病毒赶快跳转,不要处理带病毒的数据。
set rs=server.createobject("ADODB.recordset")
sql="select * from imgurl"
rs.open sql,conn,1,3
rs.addnew
rs("img").AppendChunk myData'把这个图片的二进制数据新增到img字段里面。
tpm=replace(now(),"/","_") '用的日期做名字,日期里面有"/"," ",":"之类的东西,这些东西全部替换成"_"。
tpm=replace(tpm,":","_")
tpm=replace(tpm," ","_")
rs("图片名")=tpm
rs.update
Set MyStream=Server.CreateObject("Adodb.Stream")
MyStream.Type=1
MyStream.Open
MyStream.Write rs("img").getChunk(8000000)
MyStream.SaveToFile server.mappath("pic/"&tpm&".jpg")
MyStream.close
set MyStream=nothing
rs("img")="" '把access里面的二进制图片内容删除,只保留图片的名字。
rs.update
rs.close
set rs=nothing
response.write "<script>alert(""上传成功"")location.href=""upload.asp""</script>"
end if
%>
<form action="upload.asp" method="post" enctype="multipart/form-data">
<input type="file" name="imgurl">
<input type="submit" name="ok" value="上传">
</form>
<!--------------下面是把图片显示出来------------------->
<div style="margin-top:2em"><!--------------创建一个div把图片显示区域定位一下------------------->
<%
set rs2=server.createobject("ADODB.recordset")
sql2="select * from imgurl order by id desc"
rs2.open sql2,conn,1,1
for s=1 to rs2.recordcount
if not rs2.eof and not rs2.bof then
%>
<img src="pic/<%=rs2("图片名")%>.jpg">
<%
else
exit for
end if
rs2.movenext
next
rs2.close
set rs2=nothing
%>
</div>
<%
conn.Close
Set conn = Nothing
%>
<!--至于删除图片,这个就很简单了,图片的名字都已经进access里面了,直接读一下access里面的名字,读了一个名字,然后用fso在pic文件夹里面去删除对应的图片文件就可以了。--->
效果图:网页链接
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)