<%@language="vbscript"%>
<%
response.buffer=true
'取得文件大小
formsize=request.totalbytes 'Request.TotalBytes方法返回从客户端读取到的数据的字节数
'设定上传文件大小,字节为单位.如果图片文件大于51160字节,将返回到图片上传页.并给出错误提示
if formsize>51160 then response.write("上传图片太大!")
formtype=request.ContentType
if formtype<>"jpg" or formtype<>"gif" then response.write("上传的文件格式不对!")
'获取上传的图片数据
formdata=request.binaryread(formsize) 'request.binaryread方法可以获取提交的文件数据
bncrlf=chrB(13)&chrB(10) 'vbCrLf是VB中用于表示“回车换行”的字符串常数(长度为2字节),相当于Chr(10)+Chr(13) 'bncrlf是加车换行的意思 chrb(13) & chrb(10)十六进制表示的回车换行 chr()返回与指定的 ANSI 字符代码相对应的字符。
divider=leftB(formdata,clng(instrb(formdata,bncrlf))-1) '按回车符和换行符的位置,从左取值 left()返回指定数目的从字符串的左边算起的字符。instr()返回某字符串在另一字符串中第一次出现的位置。
datastart=instrB(formdata,bncrlf&bncrlf)+4 '取得数据头 连续的回车符和换行符的位置:+4
dataend=instrB(datastart+1,formdata,divider)-datastart '取得数据尾
mydata=midB(formdata,datastart,dataend) '得到图片数据 mid()从字符串中返回指定数目的字符。
'建立同数据库联接
set conn=server.CreateObject("ADODB.connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("images.mdb")
conn.Open connstr
set rec=server.createobject("adodb.recordset")
sql="select * from images"
rec.open sql,conn,1,3
'判断是否曾经上传过相片,如果上传过就更改相片,否则就添加到数据库中
rec.addnew
rec("img").appendchunk mydata 'appendchunk用于向一域内添加大块的二进制或字符数据
rec.update
rec.close
set rec=nothing
set conn=nothing
response.redirect"upload.asp"
%>
3
<%
set conn=server.CreateObject("ADODB.connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("images.mdb")
conn.Open connstr
set rs=server.createobject("ADODB.recordset")
strsql="select img from images where id ="&trim(request("id"))
rs.open strsql,conn,1,1
Response.ContentType="image/*" '以便正常显示图片
Response.BinaryWrite rs("img").getChunk(7500000) 'getChunk返回大型文本或二进制数据Field对象的全部或部分内容。
rs.close
set rs=nothing
set conn=nothing
%>
set rs=Server.CreateObject("adodb.recordset")
sql="SELECT top 1 * FROM imgtable ORDER BY id DESC" ’这里的意思是选择最后一个Id,既刚刚被改动
rs.Open sql,strconn,1,3 ’就是你上传的图像的两个文本字段。
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")
strconn="driver={microsoft access driver (*.mdb)};dbq="&server.MapPath("test.mdb")
sql="SELECT * FROM imgtable"
rs.Open sql,strconn,1,3
set rs=Server.CreateObject("adodb.recordset")
sql="SELECT top 1 * FROM imgtable ORDER BY id DESC"
rs.Open sql,strconn,1,3
%>
<html>
<body>
以下是你的上传资料。<br>
文本一:<% Response.Write rs("text1") %><br>
文本二:<% Response.Write rs("text2") %><br>