|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
asp可以使用微软的activeX使得网页功能无比强大,不过安全性也较差,而且是基于的windows服务器,所以性能稳定性也一般上传第二重:文本信息与图片文件同时提交保留到数据库
图片文件也可保留到磁盘文件
这个成绩已不是甚么奇怪成绩了,网上也有年夜把的教程,但年夜多半是授人以鱼,而不授人以渔,经由辛劳的材料搜集,思索,调试,收拾,我基础上已把这个成绩从道理上弄分明了,如今依据我本人的了解,在典范程序的基本上,加以注释,但愿能对部分网友(比我还菜的:-))有所匡助。
请诸位年夜虾能对个中的不正或不良这处予以斧正。
程序中stream工具的用法上参考了“化境HTTP上传程序Version2.0”在代码,在此对稻喷鼻老农和梁无惧暗示衷心的感激和由衷的敬意。
前次讲了单个图片文件保留到数据库,此次讲一下文本信息与图片文件同时提交保留到数据库,图片文件也可保留到磁盘文件。
MultiInputOrImageToData.asp
<%@Language=VBScript%>
<%optionexplicit%>
<%
把一段二进制数据写进到一个文件
subsaveBin2File(srmSource,posB,posLen,strPath)
dimsrmObj
setsrmObj=server.CreateObject("adodb.stream")
srmObj.Type=1
srmObj.Mode=3
srmObj.Open
srmSource.Position=posB-1
srmSource.CopyTosrmObj,posLen
srmObj.Position=0
srmObj.SaveToFilestrPath,2 假如该文件已存在,无前提掩盖
srmObj.Close
setsrmObj=nothing
endsub
二进制数据转换为字符串,包含汉字
functiongetTextfromBin(srmSource,posBegin,posLen)
dimsrmObj,strData
setsrmObj=server.CreateObject("adodb.stream")
srmObj.Type=1
srmObj.Mode=3
srmObj.Open
srmSource.position=posBegin-1 地位计数首数纷歧样,这个工具是对0入手下手的
srmSource.CopyTosrmObj,posLen
srmObj.Position=0
srmObj.Type=2
srmObj.Charset="gb2312"
strData=srmObj.ReadText
srmObj.Close
setsrmObj=nothing
getTextfromBin=strData
endfunction
双字节字符串转换成单字节字符串
functiongetSBfromDB(bytString)
dimbin,i
bin=""
fori=1tolen(bytString)
bin=bin&chrb(asc(mid(bytString,i,1)))
next
getSBfromDB=bin
endfunction
单字节字符串转换成双字节字符串
functiongetDBfromSB(bitString)
dimstr,i
str=""
fori=1tolenb(bitString)
str=str&chr(ascb(midb(bitString,i,1)))
next
getDBfromSB=str
endfunction
从一个完全路径中析出文件称号
functiongetFileNamefromPath(strPath)
getFileNamefromPath=mid(strPath,instrrev(strPath,"")+1)
endfunction
判别函数
functioniif(cond,expr1,expr2)
ifcondthen
iif=expr1
else
iif=expr2
endif
endfunction
界说数据库毗连字符串
dimcnstr
cnstr="driver={MicrosoftAccessDriver(*.mdb)};dbq="&server.MapPath("./upload.mdb")
%>
<HTML>
<HEAD>
<title>多个表单域或图象同步保留到数据库</title>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
</HEAD>
<body>
<p>导航菜单:<b>上传图片</b> <ahref="ShowImageListFromData2.asp">显现图片</a><hr></p>
<%
ifrequest.ServerVariables("REQUEST_METHOD")="POST"then
dimsCome,binData
dimposB,posE,posSB,posSE
dimbinCrlf,binSub
dimstrTitle,strFileName,strContentType,posFileBegin,posFileLen,aryFileInfo
dimi,j
dimdicData
dimstrName,strValue
binCrlf=getSBfromDB(vbcrlf) 界说一个单字节的回车换行符
binSub=getSBfromDB("--") 界说一个单字节的“--”字符串
setsCome=server.CreateObject("adodb.stream")
sCome.Type=1 指定前往数据范例adTypeBinary=1,adTypeText=2
sCome.Mode=3 指定翻开形式adModeRead=1,adModeWrite=2,adModeReadWrite=3
sCome.Open
sCome.Writerequest.BinaryRead(request.TotalBytes)
sCome.Position=0
binData=sCome.Read
response.BinaryWritebinData 调试用:显现提交的一切数据
response.Write"<hr>" 调试用
posB=instrb(binData,binSub)
posB=instrb(posB,binData,bincrlf)+2 +2是到场回车换行符自己的长度
posB=instrb(posB,binData,getSBfromDB("name="""))+6
setdicData=server.CreateObject("scripting.dictionary") 用来保留信息
dountilposB=6
posE=instrb(posB,binData,getSBfromDB(""""))
Response.Write"name="&getTextfromBin(sCome,posB,posE-posB)&"<br>"
strName=getTextfromBin(sCome,posB,posE-posB)
posB=posE+1 指针挪动到“"”的前面
posE=instrb(posB,binData,bincrlf)
Response.WriteposB&"->"&posE&"<br>"
ifinstrb(midb(binData,posB,posE-posB),getSBfromDB("filenam</p>Windows本身的所有问题都会一成不变的也累加到了它的身上。安全性、稳定性、跨平台性都会因为与NT的捆绑而显现出来; |
|