内容载入中...
示例一共有三個文件:upload.htm(上传界面)
process.asp(处理程序)
showimg.asp(显示图象)
数据库:在pubs数据库中建立一個新表名為imgtest
字段名 類型 長度
----------------------------------------------
id int (自動編號)
img iamge
imginfo nchar 50
以下是三個文件的代碼:
upload.htm---------------------------------------------------------------------
<form name="form1" method="post" action="process.asp" enctype="multipart/form-data" >
圖象路徑: <input type="file" name="img" style="width:400" class="tx1" value="">
圖象說明: <input type="text" name="imginfo">
<input type="submit" name="Submit" value="· 提交 ·" class="bt">
<input type="reset" name="Submit2" value="· 重置 ·" class="bt">
</form>
process.asp------------------------------------------------------------------------
<!--#include file="../bin/strCnn.asp"-->
<%
response.expires=0
’目的:將二進制字符轉換成普通字符
Function bin2str(binstr)
Dim varlen,clow,ccc,skipflag
skipflag=0
ccc = ""
varlen=LenB(binstr)
For i=1 To varlen
If skipflag=0 Then
clow = MidB(binstr,i,1)
If AscB(clow) > 127 Then
ccc =ccc & Chr(AscW(MidB(binstr,i+1,1) & clow))
skipflag=1
Else
ccc = ccc & Chr(AscB(clow))
End If
Else
skipflag=0
End If
Next
bin2str = ccc
End Function
’目的:把表單中的圖象數據分離出來
’其中參數formsize為表單數據大小,formdata為表單的總數據
Function ImageUp(formsize,formdata)
bncrlf=chrb(13) & chrb(10)
divider=leftb(formdata,instrb(formdata,bncrlf)-1) ’formdata第一個bncrlf左邊的數據
datastart=instrb(formdata,bncrlf & bncrlf)+4 ’兩個bncrlf右邊的數據的起始位
dataend=instrb(datastart+1,formdata,divider)-datastart
Imageup=midb(formdata,datastart,dataend)
End Function
’目的:把表單中的變量值取出
’其中參數varName為要尋找的字段變量,strTXT為已從圖象中分離出來的的所有文本
Function findVar(varName,strTxt)
startPos=1
strLen=len(varName)+2
’表單中可能有多個同名變量(用在有主表與明細表中的數據更新中)
for i=1 to len(strTXT)
varStart=instr(startPos,strTXT,varName)+strLen+3
varEnd=instr(varStart,strTXT,"--")-2
varValLen=varEnd-varStart
inVar=mid(strTXT,varStart,varValLen)
findVar=findVar & inVar
startPos=instr(varStart,strTXT,varName)
if startPos=0 then exit for ’如果找不到則退出循環
findVar=findVar & "," ’ 以","作為多個同名變量值間的分隔符,實際上本例倒不需要
next
End function
FormSize = Request.TotalBytes
FormData = Request.BinaryRead( FormSize )
Image = ImageUp(FormSize,Formdata)
’以下兩步不能省略,否則取不出文字
strTXT=mid(formdata,instr(formdata,image)+len(image)+1) ’取出文字
strTXT=bin2str(strTXT) ’二進制轉換成普通文字
imginfo=findVar("imginfo",strTXT) ’相當於request.form("imginfo")
’MyArray = Split(imginfo, ",", -1, 1) ’分離從imginfo返回的多個值,在本例子中不用
Application.Lock
set objCnn=Server.CreateObject("ADODB.Connection")
objCnn.Open strCnn
set rec=Server.CreateObject("ADODB.Recordset")
rec.Open "imgtest",objCnn,1,3
rec.addnew ’如果你只想更新一個記錄,則可使這句失效
rec("imginfo")=imginfo
if Len(Image)>1 then
rec("img").Appendchunk Image ’把圖象寫入数据库
end if
rec.update
rec.close:set rec=nothing
set objCnn=Nothing
Application.Unlock
’輸出圖象說明和圖象
response.write imginfo
response.write "<img src=’showimg.asp?imginfo=" & imginfo & "’ boder=0>"
%>
showimg.asp-----------------------------------------------------------------------
<!--#include file="../bin/strCnn.asp"-->
<%response.expires=0
response.buffer=true
response.clear
Response.ContentType = "image/*"
set objCnn=server.CreateObject("ADODB.connection")
objCnn.Open strCnn
strsql="SELECT * FROM imgtest where imginfo=’" & Request.QueryString("imginfo") & "’"
set rec=objCnn.Execute(strsql)
Response.BinaryWrite rec("img")
rec.close:set rec=nothing
set objCnn=nothing%>