您的位置:首页网页设计ASP实例 → 无组件图文混合上传示例

无组件图文混合上传示例

时间:2004/11/7 2:55:00来源:本站整理作者:蓝点我要评论(0)

以下代码没有规范,还有些功能没完成,有那位高手能把它修改一下,封装成类则更是造福大众,或者以后有时间我会做的。有任何错误或建议请一定要给我发E-mail:sobina@21cn.com,谢谢。

  好了,少说多做,本示例在w2kServer,IIS5,SQL SERVER7中测试通过。

如有不明白的可到精华区查“图象”或“图片”关键字找到答案,或写信给我。

  示例一共有三个文件:upload.htm(上传界面)

process.asp(处理程序)

showimg.asp(显示图象)

数据库:在pubs数据库中建立一个新表名为imgtest

字段名    类型   长度

----------------------------------------------

id int (自动编号)

img iamge

imginfo nchar 50



以下是三个文件的代码:



upload.htm

---------------------------------------------------------------------





Untitled Document
















bordercolordark="#CCCCCC" bordercolorlight="#000000">

























Sobina

的图文上传界面





图象路径:





图象说明:



















------------------------------------------------------------------------

process.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 ""

%>

-----------------------------------------------------------------------

showimg.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

%>








相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 迅雷新手完全入门手册 asp下面javascript上传图片限制格式大小方法告诉大家网页弹出窗口应用总结ASP常见错误类型大全asp常见错误分析和解决办法

人气排行 总是弹出visual studio 实时调试器 三种解决SQLSERVER存储过程及调用详解Asp获取真实IP地址ASP中连接Mssql的几种方法一个简单好用的UBB编辑器(含代码)如何用Split将字符串转换为数组并获取数组下ASP防止表单重复提交的办法告诉你免费的简单聊天室源代码