仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 480|回复: 8
打印 上一主题 下一主题

[学习教程] ASP编程:多图片上传到指定的目次并存到数据库

[复制链接]
蒙在股里 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:30:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
ActiveServerPage技术为应用开发商提供了基于脚本的直观、快速、高效的应用开发手段,极大地提高了开发的效果。在讨论ASP的安全性问题之前,让我们来看看ASP是怎么工作的。关于图片上传的例子在网上有良多文章和原代码。可是每次上论坛扫瞄帖子的时分都是看到良多网友对图片上传感应头疼和贫苦。实在这个成绩也是已经让我感应头疼。也看过了很多的文章和代码。如今我写的这篇文章是把我对照喜好的一篇代码和动网里的妙手对这篇代码优化后再加上我增添一些代码分离出来的!呵呵,实在这篇文章是沾了写这篇代码的人(稻喷鼻居士)和动网里那些妙手的光。:)
好了,不说空话了。入手下手来搭建所必要的情况和数据布局!
先新建一个名字叫photo的文件夹。(我在这里就是把图片上传到这个文件夹里的。)创建一个名字叫database的数据库。再接着创建一个名字叫sFile的表。内外计划四个字段分离是id(int),image(varchar),image1(varchar),image2(varchar)。我这里用的数据库是SQL。
相干的文件
register.asp
<html>
<head>
<title>文件</title>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
</head>
<body>
<formname="form1"method="post"action="save.asp">
<tablewidth="50%"border="1"cellspacing="0"cellpadding="0"align="center">
<tr>
<tdwidth="20%"><ahref="#">图片上传</a></td>
<tdwidth="80%">
<inputtype="text"name="myface">

<inputtype="text"name="myface1">

<inputtype="text"name="myface2">
(此处用户不用填图片上传后主动天生)</td>
</tr>
<tr>
<tdcolspan="2"align="center">
<inputtype="submit"name="Submit"value="提交">
<inputtype="reset"name="Submit2"value="重设">
</td>
</tr>
</table>
</form>
</body>
</html>

reg_upload.asp
<html>
<head>
<title></title>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<linkrel="stylesheet"href="CSS/style.css"type="text/css">
</head>
<bodyleftmargin="0"topmargin="0">
 <br>
<br>
<br>
<tablewidth="90%"border="0"align="center"bgcolor="#000000"height="152"cellspacing="1">
<tr>
<tdheight="34"align="center"bgcolor="#FFFFFF"><fontcolor="#FFFF33"><b><fontsize="4"color="#000000">选择图片</font></b></font></td>
</tr>
<tr>
<tdbgcolor="#FFFFFF">
<formname="form"method="post"action="upfile.asp"enctype="multipart/form-data">
<inputtype="hidden"name="filepath"value="photo">
<inputtype="hidden"name="act"value="upload">
<inputtype="file"name="file1"size="30"><br>
<inputtype="file"name="file2"size="30"><br>
<inputtype="file"name="file3"size="30">

<inputtype="submit"name="Submit"value="粘贴"class="tl">
</form>
</td>
</tr>
</table>
</body>
</html>

upfile.asp
<!--#includeFILE="upload.inc"-->
<html>
<head>
<title>文件上传</title>
</head>
<body>
<%
dimarr(3)
dimupload,file,formName,formPath,iCount,filename,fileExt,i
setupload=newupload_5xSoft创建上传工具


formPath=upload.form("filepath")
在目次后加(/)
ifright(formPath,1)"/"thenformPath=formPath&"/"
iCount=0
i=0
foreachformNameinupload.file列出一切上传了的文件
setfile=upload.file(formName)天生一个文件工具

iffile.filesize<0then
response.write"<fontsize=2>请先选择你要上传的图片 [<ahref=#onclick=history.go(-1)>从头上传</a>]</font>"
response.end
endif

iffile.filesize>100000then
response.write"<fontsize=2>图片巨细凌驾了限定 [<ahref=#onclick=history.go(-1)>从头上传</a>]</font>"
response.end
endif
iffileEXT".gif"andfileEXT".jpg"then
response.write"<fontsize=2>文件格局不合错误 [<ahref=#onclick=history.go(-1)>从头上传</a>]</font>"
response.end
endif

fileExt=lcase(right(file.filename,4))
filename=formPath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&file.FileName
arr(i)=filename
i=i+1

iffile.FileSize>0then假如FileSize>0申明有文件数据
file.SaveAsServer.mappath(filename)保留文件
response.writefile.FilePath&file.FileName&"("&file.FileSize&")=>"&formPath&File.FileName&"乐成!<br>"

iCount=iCount+1
endif
setfile=nothing
next
ifinstr(arr(0),".")=0andinstr(arr(1),".")=0andinstr(arr(2),".")=0then
response.write"<fontsize=2>请先选择你要上传的图片 [<ahref=#onclick=history.go(-1)>从头上传</a>]</font>"
response.end
endif
ifinstr(arr(0),".")0then
response.write"<script>opener.document.forms[0].myface.value="&arr(0)&"</script>"
else
response.write"<script>opener.document.forms[0].myface.value=</script>"
endif
ifinstr(arr(1),".")0then
response.write"<script>opener.document.forms[0].myface1.value="&arr(1)&"</script>"
else
response.write"<script>opener.document.forms[0].myface1.value=</script>"
endif
ifinstr(arr(2),".")0then
response.write"<script>opener.document.forms[0].myface2.value="&arr(2)&"</script>"
else
response.write"<script>opener.document.forms[0].myface2.value=</script>"
endif
setupload=nothing删除此工具

session("upface")="done"

HtmendiCount&"个文件上传停止!"

subHtmEnd(Msg)
setupload=nothing
response.write"<html><head><metahttp-equiv=Refreshcontent=3url=""javascript:window.close();""></head><body><center><br><br>文件上传乐成<br>感谢你的撑持!<br>本窗口三秒后主动封闭</center></body></html>"
response.end
endsub
%>
</body>
</html>
upload.inc
<SCRIPTRUNAT=SERVERLANGUAGE=VBSCRIPT>

dimupfile_5xSoft_Stream

Classupload_5xSoft

dimForm,File,Version

PrivateSubClass_Initialize
dimiStart,iFileNameStart,iFileNameEnd,iEnd,vbEnter,iFormStart,iFormEnd,theFile
dimstrDiv,mFormName,mFormValue,mFileName,mFileSize,mFilePath,iDivLen,mStr
Version=""
ifRequest.TotalBytes<1thenExitSub
setForm=CreateObject("Scripting.Dictionary")
setFile=CreateObject("Scripting.Dictionary")
setupfile_5xSoft_Stream=CreateObject("Adodb.Stream")
upfile_5xSoft_Stream.mode=3
upfile_5xSoft_Stream.type=1
upfile_5xSoft_Stream.open
upfile_5xSoft_Stream.writeRequest.BinaryRead(Request.TotalBytes)

vbEnter=Chr(13)&Chr(10)
iDivLen=inString(1,vbEnter)+1
strDiv=subString(1,iDivLen)
iFormStart=iDivLen
iFormEnd=inString(iformStart,strDiv)-1
whileiFormStart<iFormEnd
iStart=inString(iFormStart,"name=""")
iEnd=inString(iStart+6,"""")
mFormName=subString(iStart+6,iEnd-iStart-6)
iFileNameStart=inString(iEnd+1,"filename=""")
ifiFileNameStart>0andiFileNameStart<iFormEndthen
iFileNameEnd=inString(iFileNameStart+10,"""")
mFileName=subString(iFileNameStart+10,iFileNameEnd-iFileNameStart-10)
iStart=inString(iFileNameEnd+1,vbEnter&vbEnter)
iEnd=inString(iStart+4,vbEnter&strDiv)
ifiEnd>iStartthen
mFileSize=iEnd-iStart-4
else
mFileSize=0
endif
settheFile=newFileInfo
theFile.FileName=getFileName(mFileName)
theFile.FilePath=getFilePath(mFileName)
theFile.FileSize=mFileSize
theFile.FileStart=iStart+4
theFile.FormName=FormName
file.addmFormName,theFile
else
iStart=inString(iEnd+1,vbEnter&vbEnter)
iEnd=inString(iStart+4,vbEnter&strDiv)

ifiEnd>iStartthen
mFormValue=subString(iStart+4,iEnd-iStart-4)
else
mFormValue=""
endif
form.AddmFormName,mFormValue
endif

iFormStart=iformEnd+iDivLen
iFormEnd=inString(iformStart,strDiv)-1
wend
EndSub

PrivateFunctionsubString(theStart,theLen)
dimi,c,stemp
upfile_5xSoft_Stream.Position=theStart-1
stemp=""
fori=1totheLen
ifupfile_5xSoft_Stream.EOSthenExitfor
c=ascB(upfile_5xSoft_Stream.Read(1))
Ifc>127Then
ifupfile_5xSoft_Stream.EOSthenExitfor
stemp=stemp&Chr(AscW(ChrB(AscB(upfile_5xSoft_Stream.Read(1)))&ChrB(c)))
i=i+1
else
stemp=stemp&Chr(c)
EndIf
Next
subString=stemp
Endfunction

PrivateFunctioninString(theStart,varStr)
dimi,j,bt,theLen,str
InString=0
Str=toByte(varStr)
theLen=LenB(Str)
fori=theStarttoupfile_5xSoft_Stream.Size-theLen
ifi>upfile_5xSoft_Stream.sizethenexitFunction
upfile_5xSoft_Stream.Position=i-1
ifAscB(upfile_5xSoft_Stream.Read(1))=AscB(midB(Str,1))then
InString=i
forj=2totheLen
ifupfile_5xSoft_Stream.EOSthen
inString=0
Exitfor
endif
ifAscB(upfile_5xSoft_Stream.Read(1))AscB(MidB(Str,j,1))then
InString=0
ExitFor
endif
next
ifInString0thenExitFunction
endif
next
EndFunction

PrivateSubClass_Terminate
form.RemoveAll
file.RemoveAll
setform=nothing
setfile=nothing
upfile_5xSoft_Stream.close
setupfile_5xSoft_Stream=nothing
EndSub


PrivatefunctionGetFilePath(FullPath)
IfFullPath""Then
GetFilePath=left(FullPath,InStrRev(FullPath,""))
Else
GetFilePath=""
EndIf
Endfunction

PrivatefunctionGetFileName(FullPath)
IfFullPath""Then
GetFileName=mid(FullPath,InStrRev(FullPath,"")+1)
Else
GetFileName=""
EndIf
Endfunction

PrivatefunctiontoByte(Str)
dimi,iCode,c,iLow,iHigh
toByte=""
Fori=1ToLen(Str)
c=mid(Str,i,1)
iCode=Asc(c)
IfiCode<0TheniCode=iCode+65535
IfiCode>255Then
iLow=Left(Hex(Asc(c)),2)
iHigh=Right(Hex(Asc(c)),2)
toByte=toByte&chrB("&H"&iLow)&chrB("&H"&iHigh)
Else
toByte=toByte&chrB(AscB(c))
EndIf
Next
Endfunction
EndClass


ClassFileInfo
dimFormName,FileName,FilePath,FileSize,FileStart
PrivateSubClass_Initialize
FileName=""
FilePath=""
FileSize=0
FileStart=0
FormName=""
EndSub

PublicfunctionSaveAs(FullPath)
dimdr,ErrorChar,i
SaveAs=1
iftrim(fullpath)=""orFileSize=0orFileStart=0orFileName=""thenexitfunction
ifFileStart=0orright(fullpath,1)="/"thenexitfunction
setdr=CreateObject("Adodb.Stream")
dr.Mode=3
dr.Type=1
dr.Open
upfile_5xSoft_Stream.position=FileStart-1
upfile_5xSoft_Stream.copytodr,FileSize
dr.SaveToFileFullPath,2
dr.Close
setdr=nothing
SaveAs=0
endfunction
EndClass
</SCRIPT>
save.asp
<%dimdsn,conn
dsn="driver={sqlserver};server=127.0.0.1;uid=sa;pwd=;database=database"
setconn=server.createobject("adodb.connection")
conn.opendsn
%>
<%dimfile,file1,file2
file=trim(request.form("myface"))
file1=trim(request.form("myface1"))
file2=trim(request.form("myface2"))
setrs=server.createobject("adodb.recordset")
sql="InsertIntosFile(image,image1,image2)Values("&file&","&file1&","&file2&")"
conn.execute(sql)
response.redirect"ok.asp"
%>
呵呵,代码多了点。复制以上的代码到你的呆板上运转是否是你想要的了局!至于显现图片信任人人都分明了吧!我就不用多说了。值得一提的是此代码不但能够用于图片上传而是任何格局的文件都能够哦,至于文件巨细也能够由你本人来界说哦!另有的就是我只界说了上传三个如果要上传更多的话稍为改下代码就能够了。细心看代码就晓得了是否是以为很便利和有用。这个只不外是在我办理这个成绩的时分用的一种办法罢了。你如果有更好的办法来完成也能够来EMAIL告知我!相互进修配合前进。第一次写文章大概表达方面有语法成绩。如果有甚么成绩也能够来EMAIL告知我!我的邮箱:hushuowang@163.net,QQ:11313112。工夫不早了,我要睡觉了!呼噜呼噜zzzZZZ....
(出格感激hooke等妙手一向以来的手艺撑持)小汪仔于2002/5/26晚
问题是他们究竟是喜欢他们是使用软件时,速度快还是速度慢好.(当然在3秒以内).无论是他们输入资料时,查找资料时,分析资料时.
精灵巫婆 该用户已被删除
沙发
发表于 2015-1-19 15:50:13 | 只看该作者
交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。
海妖 该用户已被删除
板凳
发表于 2015-1-26 19:16:25 | 只看该作者
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:
不帅 该用户已被删除
地板
发表于 2015-2-4 20:21:35 | 只看该作者
接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。
兰色精灵 该用户已被删除
5#
发表于 2015-2-10 06:45:14 | 只看该作者
尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。
若相依 该用户已被删除
6#
发表于 2015-3-1 02:30:51 | 只看该作者
我想问如何掌握学习节奏(先学什么再学什么)最好详细点?
7#
发表于 2015-3-10 12:29:18 | 只看该作者
完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。
谁可相欹 该用户已被删除
8#
发表于 2015-3-17 07:08:35 | 只看该作者
它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
小妖女 该用户已被删除
9#
发表于 2015-3-24 01:00:52 | 只看该作者
学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-27 19:14

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表