仓酷云
标题:
ASP编程:多图片上传到指定的目次并存到数据库
[打印本页]
作者:
蒙在股里
时间:
2015-1-16 22:30
标题:
ASP编程:多图片上传到指定的目次并存到数据库
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
交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。
作者:
海妖
时间:
2015-1-26 19:16
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:
作者:
不帅
时间:
2015-2-4 20:21
接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。
作者:
兰色精灵
时间:
2015-2-10 06:45
尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。
作者:
若相依
时间:
2015-3-1 02:30
我想问如何掌握学习节奏(先学什么再学什么)最好详细点?
作者:
仓酷云
时间:
2015-3-10 12:29
完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。
作者:
谁可相欹
时间:
2015-3-17 07:08
它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
作者:
小妖女
时间:
2015-3-24 01:00
学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2