ASP网站制作之ASP文件上逼真功 第二重(招势图加内功...
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的捆绑而显现出来; ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。 因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。 完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。 下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助... 接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。 我想问如何掌握学习节奏(先学什么再学什么)最好详细点? 哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的? 多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。 还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。 兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的 兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的
页:
[1]