AspUpload 一

合集下载

化境ASP无组件上传类 - upload_5xsoft 使用手册

化境ASP无组件上传类 - upload_5xsoft 使用手册

化境ASP无组件上传类 - upload_5xsoft 使用手册目录1.关于 upload_5xsoft2.运行平台与注意事项2.类的成员与对象3.使用示例关于 upload_5xsoft一直以来,由于FileSystemObject的局限,所以ASP最大的难题就是文件上传,大多解决法就是安装第三方上传组件。

可第三方组件有很多问题,有的组件要注册,有的组件要在表单中加上他的版权信息。

还有的就是组件的兼容问题。

在网上也流传了很多无组件上传的代码,但都是只能上传文本文件,或是只能将文件上传到数据库中。

我这段时间在研究ASP,发现可以不用第三方组件上传任意类型的文件。

就写了这个类,给大家一个方便,整个类放在一个文件中: upload_5xsoft.inc 在 Example 目录下还有一个完整的多文件上传示例程序,可以直接使用。

申明:源代码是完全开放的,可能随意传播,但请保留其完整性,未经作者同意,不得用于商业。

运行平台与注意事项a)只能运行于 Windows2000+IIS 5,不支持 NT4+IIS4 或是 Win98+PWS, 只要在ASP中加上: <!--#include FILE="upload_5xsoft.inc"--> 就行了b) 在使用文件上传时, 表单 form 要加上 enctype="multipart/form-data" 即:<form name="form1" method="post" action="" enctype="multipart/form-data"><input type="text" value="abc" name="text1"><input type=file name="file"><input type=submit name="submit" value="提交"></form>upload_5xsoft的对象如定义一个上传对象<!--#include FILE="upload_5xsoft.inc"--><%set upload=new upload_5xsoft 'upload就是一个对象%>upload_5xsoft 对象成员file 文件对象集,(是个dictionary对象)文件对象成员:Count 属性,文件表单的个数FileName 属性,上传文件的名字FileSize 属性,上传文件的大小(为0是表示没有文件)FilePath 属性,上传前文件所在的路径FormName 属性,文件表单的名字SaveAs 方法,储存上传后文件,有一个参数,路径要为真实路径如:例子: set file=upload.file("file1") 'file1为表单名response.write "<br>文件名:"&file.FileNameresponse.write "<br>文件大小:"&file.FileSizeresponse.write "<br>文件路径:"&file.FilePathfile.saveAs Server.mappath("/1.jpg")form 表单数据集,(是个dictionary对象)用来代替 Request.Formcount 属性,表单数exists 方法,检查是否有指定的表单名更多的用法可看 vbscript 的dictionary对象帮助例子:'得到text1表单的数据,uplaod就是一开始创建的对象sText=upload.form("text1")Version 属性,upload_5xsoft类的版本号,如:response.write upload.Version使用示例1.上传一个jpg文件的示例:文件1: upload.htm<html><title>example</title><body><form name="form1" method="post" action="upload.asp" enctype="multipart/form-data"><input type=file name="file1"><input type=submit name="submit" value="提交"></form></body></html>文件2: upload.asp<html><title>example</title><body><!--#include FILE="upload_5xsoft.inc"--><%set upload=new upload_5xsoftset file=upload.file("file1")if file.fileSize>0 thenfile.saveAs Server.mappath("temp.jpg")response.write "<br>上传文件:"&file.FileName&" => temp.jpg OK!"response.write "<br>文件大小:"&file.FileSizeend ifset upload=nothing%></body></html>2.列表出有文件表单(多文件上传)<html><title>example</title><body><!--#include FILE="upload_5xsoft.inc"--><%set upload=new upload_5xsoftfor each formName in upload.fileset file=upload.file(formName)if file.FileSize>0 thenfile.SaveAs Server.mappath(file.FileName)response.write file.FilePath&file.FileName&" ("&file.FileSize&") => " response.write file.FileName&" 成功!<br>"end ifset file=nothingnextset upload=nothing%>你还可能直接使用作者写好了的上传程序在example目录中立即下载若程序有问题,请写作者联系 getc@-----------------------------------------------------------------------------------------------------------------------------稻香老农[ASP]利用稻香老农的无组件上传类进行多文件上传本例使用稻香老农的无组件上传类进行多文件和表单项的混合上传。

AspUpload图片上传组件使用细则

AspUpload图片上传组件使用细则

(注意:在使用组件的脚本内接受表单的值为Upload.Form ) 上传可以为单文件上传 也可为批量文件上传(单文件上传:)'Set file1 = Upload.Files("file1")'newname = year(now()) & month(now()) & day(now()) & hour(now()) &minute(now()) & second(now())'file1.SaveAs Server.MapPath(".") & "\" & newname & file1.Ext'Set file1 = nothing(批量上传:)For each MyFiles in Upload.Filesnewname = year(now()) & month(now()) & day(now()) & hour(now()) & minute(now()) & second(now())MyFiles.SaveAs Server.MapPath(".") & "\" & newname & MyFiles.ExtNextSet Upload = nothing上传文件组件的属性:名称说明 OverwriteFiles 是否覆盖文件上传组件的方法:名称说明 备注 Save 保存文件 既是子过程又是函数过程。

子过程有参数则传至服务器,无参数传至服务器内容中;函数过程返回的是上传文件数量。

SetMaxsize 设置上传文件最大字节数使用方法:SetMaxsize 1024,True说明:最大字节1024,显示错误信息,若为 False 则截断文件大小,不显示错误信息。

艾恩ASP无组件上传类(AienAspUpload_V13.01.16)

艾恩ASP无组件上传类(AienAspUpload_V13.01.16)

艾恩ASP无组件上传类(上传组件)AienAspUpload V13.01.16 By Anlige一、简介自从接触ASP就开始接触上传,看过一些上传类,但是总感觉封装的还是不够简单,因此自己尝试写一个能够用最少最简单的代码实现各种上传方式的上传类。

在学校期间就开始写,一点点的完善、优化,到现在的版本,现在的版本能适应各种上传方式。

上传类的主要的功能如下:1、自由设置最大上传大小、单文件最大上传大小2、自由设置允许上传的文件类型3、可设置文本的编码,以适应各种上传环境4、内置进度条,用户可选择开启和关闭(需配合客户端程序)5、多种错误状态处理6、多种文件保存方式:原文件名、随机文件名、用户自定义文件名7、自由选择是否覆盖已存在文件8、完整保存表单数据,支持同名表单,不支持同名文件域9、可获取常见图片格式的宽高10、优化的上传过程。

注意:1、特别注意Form一定要加上enctype="multipart/form-data"属性,method属性值必须是post,否则上传会出错2、request.form()方法获取数据失效,请使用UpLoad.forms()3、上传前请确认保存文件的文件夹有读写权限,若不可写则会出现"文件无法写入"错误,解决方法/show.asp?id=81二、调用方法dim Uploadset Upload = new AnUpLoad注意:上传属性的设置必须在调用Upload.GetData()之前。

简单调用示例:dim Uploadset Upload=new AnUpLoad'Set Upload = server.CreateObject("Anasp.Anupload") Upload.SingleSize=1024*1024*1024'设置单个文件最大上传限制,按字节计;默认为不限制Upload.MaxSize=1024*1024*1024'设置最大上传限制,按字节计;默认为不限制Upload.Exe="*.bmp;*.rar;*.pdf;*.jpg;*.gif;"'设置合法扩展名Upload.Charset="gb2312"'设置文本编码,默认为gb2312Upload.Mode = 0Upload.GetData()'获取并保存数据,必须调用本方法三、类说明上传涉及2个类:AnUpLoad(关键上传类)和UploadFileEx(文件辅助类),下面分别说明:1、AnUpLoad(关键上传类)2、UploadFileEx(文件类(对象),保存文件相关信息)四、关于作者:Anlige(艾恩、Aien)主页:h ttp:// 邮箱:zhanghuiguoanlige@五、更新信息2013-1-23:1、增加对HT ML5多文件的支持;2、移除类中的所有中文提示及注释,方便在不同编码的文件中调用;3、移除文件类的图片宽高属性,可以借助Asp J peg等组件实现4、文件类增加isFile属性,判断文件类是不是包含文件五、版权信息本类版权归原作者所有,您可以无功能限制的免费使用本类,请保留类文件内的相关的说明信息。

asp无组件上传文件

asp无组件上传文件

asp无组件上传文件所谓“无组件上传文件”,就是不使用第三方组件,直接上传文件。

它是非常复杂的,可是为什么本节还要花一定的篇幅讲解呢?原因有二:(1)如果使用别人的服务器,对方可能不允许你安装第三方组件,就必须使用无组件上传;(2)学习无组件上传,就可以对文件上传的原理有深刻了解,有助于大家理解AspUpload等组件到底是怎么工作的,甚至可以动手开发属于自己的文件上传组件。

要掌握无组件上传,其实最为重要的是学会分析客户端传上来的数据,为此将首先在此讲述无组件上传原理,随后会举一些综合示例。

1. 无组件上传原理细心的同学可能已经注意到,不管是用AspUpload组件还是LyfUpload组件,上传表单文件都是一样的。

这也就提醒我们,用户将文件提交到服务器端的时候都是一样的,区别就是服务器端得到数据后,用什么方法来分析得到其中的文件名称、文件大小、文件内容、文件说明等信息。

所谓无组件上传,就是要我们自己来手工获取这些信息。

下面就分步讲解:(1)剖析上传数据的格式要对上传的数据进行分析,就必须知道上传数据的格式。

其实在<form>标记中增加enctype="multipart/form-data"属性后,上传的数据是一个长长的二进制字符串,其中包括了文件浏览框的名称、文件的客户端路径、文件MIME类型、文件内容、文本框(文件说明)的名称、文本框的值等各种信息。

就好比是邮局送到学校来的一个大邮包,其中包含了信件、包裹、汇款单、报刊等各种东西,学校收发室就要将这些东西挑出来送给相应的人。

二进制字符串是无法直接显示在页面上的,如果非要直接显示,将会看到一堆乱码,但是我们可以将二进制字符串先转换为文本字符串,然后再显示到页面上。

以本示例为例,假如客户选择了文件“C:\temp.jpg”,并且填写了文件说明“我的照片”,提交后,将二进制字符串转换为文本字符串,结果如图所示:上传数据格式说明:①首先要强调,提交上来的数据是一个二进制数据,将来我们需要处理的也是二进制数据。

ASP图片上传代码

ASP图片上传代码

ASP图片上传代码-----------------adm_up.asp-----------------代码如下:<!--#include file="conn.asp"--> '数据库连接文件<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>管理</title><style type="text/css"><!--.STYLE1 {color: #000000}body {margin-left: 0px;margin-top: 0px;margin-right: 0px;margin-bottom: 0px;}--></style><script language="javascript">function checknull(){dm=document.formvar filter=/^\s*[a-zA-Z]{1}:(\\).*[\.][jpgJPGifIF]{3}\s*$/;if (!filter.test(dm.file1.value)){alert('请选择您要上传图片,格式只能上传jpg或gif图片!');dm.file1.focus();return false;}return true;}</script></head><body><table width="100%" border="0" align="left" cellpadding="0" cellspacing="0"><tr><td width="100%" height="26" align="left"><%if session("admupiccnt")="" then%><form action="adm_upc.asp" method="post" enctype="multipart/form-data" name="form" id="form" onsubmit="return checknull()"><input type="hidden" name="act" value="upload" /><input name="file1" type="file" class="wenxints_line" size="32"/><input name="submit" type="submit" value="上传图片" /></form><%else%> <input name="Pic" type="text" value="<%=session("admupiccnt")%>" size="38" readonly/> <%end if%></td></tr></table></body></html>-----------------adm_upc.asp-----------------<!--#include file="conn.asp"--> '数据库连接文件<html><head><meta http-equiv=Content-Type content="text/html;charset=gb2312"><title></title></head>< body><div id="admheader"></div><%dim upfile_5xSoft_StreamdimFilePath,FileMaxSize,FileType,fileweb,nameset,pathset,vfname UpFilePath="../upload/" '上传文件目录FileMaxSize=110000 '文件大小100kbFileType=".jpg.gif" '文件类型fileweb=""nameset =1function makefilename(fname)fname = replace(fname,"-","")fname = replace(fname," ","")fname = replace(fname,":","")fname = replace(fname,"PM","")fname = replace(fname,"AM","")fname = replace(fname,"上午","")fname = replace(fname,"下午","")randomize()makefilename=fname&(int(RND()*10000))end functiondimupload,file,formName,iCount,url,UpFilePath,TypeFlag,fname,File NameStrset upload=new upload_classiCount=0for each formName in upload.file ''列出所有上传了的文件set file=upload.file(formName) ''生成一个文件对象if file.FileSize>0 then ''如果 FileSize > 0 说明有文件数据if FileType<>"" then '如果限制了上传文件类型if Instr(FileType,GetExtendName(file.FileName)) thenTypeFlag = 1 '文件为允许的类型elseTypeFlag = 0 '文件为不允许的类型Response.write "不支持您所上传的文件类型:"Response.write GetExtendName(file.FileName)Response.write "<br>"end ifelseTypeFlag = 1 '没有限制上传文件类型end ifif file.FileSize<FileMaxSize then ''如果未超过文件大小限制if TypeFlag = 1 thenvfname = makefilename(now())if nameset = 1 thenfname = vfname & iCount & "." & GetExtendName(file.FileName)elseif nameset =2 thenfname = file.FileNameelseif nameset = 3 thenfname = vfname & iCount & file.FileNameend iffile.SaveAs Server.mappath(UpFilePath&fname) ''保存文件iCount=iCount+1' fileStr = fileStr & "<a href='"& UpFilePath&file.FileName&"' target='_blank'>查看上传的文件:<font color='red'>" & file.FileName &"</font> ("& file.FileSize &" kb)</a><br>"FileNameStr = UpFilePath&fnamesession("admupiccnt")=fnameend ifelseresponse.write "<center>文件大小超出限制,您最多可以上传100kb的文件"exit forend ifend ifset file=nothingnext'----------------------------------------------------------------------------------------------set upload=nothing ''删除此对象if iCount=0 thenresponse.write "<font color=red>错误!</font>&nbsp;<a href='adm_pc.asp'>返回</a>"response.endend ifsub HtmEnd(Msg)set upload=nothingend subfunction GetExtendName(FileName)dim ExtNameExtName = LCase(FileName)ExtName = right(ExtName,3)ExtName = right(ExtName,3-Instr(ExtName,"."))GetExtendName = ExtNameend functionresponse.write"<script>location.href('adm_pc.asp')</script>"Class upload_classdim Form,File,VersionPrivate Sub Class_InitializedimiStart,iFileNameStart,iFileNameEnd,iEnd,vbEnter,iFormStart,iFor mEnd,theFiledimstrDiv,mFormName,mFormValue,mFileName,mFileSize,mFilePat h,iDivLen,mStrif Request.TotalBytes<1 then Exit Subset Form=CreateObject("Scripting.Dictionary")set File=CreateObject("Scripting.Dictionary")set upfile_5xSoft_Stream=CreateObject("Adodb.Stream") upfile_5xSoft_Stream.mode=3upfile_5xSoft_Stream.type=1upfile_5xSoft_Stream.openupfile_5xSoft_Stream.writeRequest.BinaryRead(Request.T otalBytes)vbEnter=Chr(13)&Chr(10)iDivLen=inString(1,vbEnter)+1strDiv=subString(1,iDivLen)iFormStart=iDivLeniFormEnd=inString(iformStart,strDiv)-1while iFormStart < iFormEndiStart=inString(iFormStart,"name=""")iEnd=inString(iStart+6,"""")mFormName=subString(iStart+6,iEnd-iStart-6)iFileNameStart=inString(iEnd+1,"filename=""")if iFileNameStart>0 and iFileNameStart<iFormEnd theniFileNameEnd=inString(iFileNameStart+10,"""")mFileName=subString(iFileNameStart+10,iFileNameEnd-iFileNameStart-10)iStart=inString(iFileNameEnd+1,vbEnter&vbEnter) iEnd=inString(iStart+4,vbEnter&strDiv)if iEnd>iStart thenmFileSize=iEnd-iStart-4elsemFileSize=0end ifset theFile=new FileInfotheFile.FileName=getFileName(mFileName) theFile.FilePath=getFilePath(mFileName) theFile.FileSize=mFileSizetheFile.FileStart=iStart+4theFile.FormName=FormNamefile.add mFormName,theFileelseiStart=inString(iEnd+1,vbEnter&vbEnter)iEnd=inString(iStart+4,vbEnter&strDiv)if iEnd>iStart thenmFormValue=subString(iStart+4,iEnd-iStart-4) elsemFormValue=""end ifform.Add mFormName,mFormValueend ifiFormStart=iformEnd+iDivLeniFormEnd=inString(iformStart,strDiv)-1wendEnd SubPrivate Function subString(theStart,theLen)dim i,c,stempupfile_5xSoft_Stream.Position=theStart-1stemp=""for i=1 to theLenif upfile_5xSoft_Stream.EOS then Exit forc=ascB(upfile_5xSoft_Stream.Read(1))If c > 127 Thenif upfile_5xSoft_Stream.EOS then Exit forstemp=stemp&Chr(AscW(ChrB(AscB(upfile_5xSoft_Stream.R ead(1)))&ChrB(c)))i=i+1elsestemp=stemp&Chr(c)End IfNextsubString=stempEnd functionPrivate Function inString(theStart,varStr)dim i,j,bt,theLen,strInString=0Str=toByte(varStr)theLen=LenB(Str)for i=theStart to upfile_5xSoft_Stream.Size-theLenif i>upfile_5xSoft_Stream.size then exit Functionupfile_5xSoft_Stream.Position=i-1if AscB(upfile_5xSoft_Stream.Read(1))=AscB(midB(Str,1)) thenInString=ifor j=2 to theLenif upfile_5xSoft_Stream.EOS theninString=0Exit forend ifif AscB(upfile_5xSoft_Stream.Read(1))<>AscB(MidB(Str,j,1)) thenInString=0Exit Forend ifnextif InString<>0 then Exit Functionend ifnextEnd FunctionPrivate Sub Class_T erminateform.RemoveAllfile.RemoveAllset form=nothingset file=nothingupfile_5xSoft_Stream.closeset upfile_5xSoft_Stream=nothingEnd SubPrivate function GetFilePath(FullPath) '获取文件路径If FullPath <> "" ThenGetFilePath = left(FullPath,InStrRev(FullPath, "\"))ElseGetFilePath = ""End IfEnd functionPrivate function GetFileName(FullPath) '获取文件名If FullPath <> "" ThenGetFileName = mid(FullPath,InStrRev(FullPath, "\")+1)ElseGetFileName = ""End IfEnd functionPrivate function toByte(Str)dim i,iCode,c,iLow,iHightoByte=""For i=1 To Len(Str)c=mid(Str,i,1)iCode =Asc(c)If iCode<0 Then iCode = iCode + 65535If iCode>255 TheniLow = Left(Hex(Asc(c)),2)iHigh =Right(Hex(Asc(c)),2)toByte = toByte & chrB("&H"&iLow) & chrB("&H"&iHigh) ElsetoByte = toByte & chrB(AscB(c))End IfNextEnd functionEnd ClassClass FileInfodim FormName,FileName,FilePath,FileSize,FileStart Private Sub Class_InitializeFileName = ""FilePath = ""FileSize = 0FileStart= 0FormName = ""End SubPublic function SaveAs(FullPath)dim dr,ErrorChar,iSaveAs=1if trim(fullpath)="" or FileSize=0 or FileStart=0 or FileName="" then exit functionif FileStart=0 or right(fullpath,1)="/" then exit functionset dr=CreateObject("Adodb.Stream")dr.Mode=3dr.Type=1dr.Openupfile_5xSoft_Stream.position=FileStart-1upfile_5xSoft_Stream.copyto dr,FileSizedr.SaveToFile FullPath,2dr.Closeset dr=nothingSaveAs=0end functionEnd Class%>另附:页面中嵌入上传页代码<iframe src="adm_pc.asp" frameborder="0" scrolling="No" width="400" height="24"></iframe>。

asp实现上传功能的源码演示(简单易懂)

asp实现上传功能的源码演示(简单易懂)

asp无组件上传图片的源码分析及下载要实现图片的上传功能其实非常简单,只需要四个文件与一个文件夹即可实现。

第一个文件:Upload.asp这个文件的源代码如下:<form method="POST" name="myform" target="_self"><input type="text" id="DefaultPicUrl"><iframestyle="top:2px"ID="UploadFiles"src="upload_Photo.asp?PhotoUrlID=1"f rameborder=0 scrolling=no width="300" height="325"></iframe></form>说明:这个文件将引用一个名为upload_Photo.asp的文件也就是下面要讲的第二个文件作为框架,同时这里传递一个PhotoUrlID参数给pload_Photo.asp 这个文件的form1表单中的名为PhotoUrlID的隐藏域名,其值为1第二个文件:Upload_Photo.asp,这个文件的源代码如下:<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><style type="text/css"><!--BODY{BACKGROUND-COLOR: #E1F4EE;font-size:9pt}.tx1 { height: 20px;font-size: 9pt; border: 1px solid; border-color: #000000; color: #0000FF}--></style><SCRIPT language=javascript>function check(){var strFileName=document.form1.FileName.value;if (strFileName=="")alert("请选择要上传的文件");document.form1.FileName.focus();return false;{}}</SCRIPT></head><body leftmargin="0" topmargin="0"><formaction="Upfile_Photo.asp"method="post"name="form1"onSubmit="retur ncheck()"enctype="multipart/form-data"><input name="FileName" type="FILE" class="tx1" size="30"><inputtype="submit"name="Submit"value="上传"style="border:1pxdoublergb(88,88,88);font:9pt"><inputname="PhotoUrlID"type="hidden"value="<%=Clng(trim(request("PhotoUrlID")))%>"></form></body></html>说明:这个是作为第一个文件Upload.asp的框架文件,注意这里的FileName的文本框是用于接受上传成功之后图片的地址第三个文件:Upfile_Photo.asp,其源代码如下:<!--#include file="upfile_class.asp"--><%constupload_type=0'上传方法:0=无惧无组件上传类,1=FSO上传2=lyfupload,3=aspupload,4=chinaaspuploaddim upload,oFile,formName,SavePath,filename,fileExt,oFileSizedim EnableUploaddim arrUpFileTypedim ranNumdim msg,FoundErrdim PhotoUrlIDmsg=""FoundErr=falseEnableUpload=false%><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <style type="text/css"><!--BODY{BACKGROUND-COLOR: #E1F4EE;}font-size:9ptid="PhotoUrlID".tx1 {height: 20px;font-size: 9pt;border: 1px solid;border-color: #000000;color: #0000FF}--></style></head><body leftmargin="2" topmargin="5" marginwidth="0" marginheight="0" > <%if EnableUploadFile="No" thenresponse.write "系统未开放文件上传功能"elseselect case upload_typecase 0call upload_0()'使用化境无组件上传类case else'response.write "本系统未开放插件功能"'response.endend selectend if%></body></html><%sub upload_0()'使用化境无组件上传类set upload=new upfile_class ''建立上传对象upload.GetData(104857600)'取得上传数据,限制最大上传100M if upload.err > 0 then'如果出错select case upload.errcase 1response.write "请先选择你要上传的文件!"case 2response.write "你上传的文件总大小超出了最大限制(200k)"end select response.endend ifPhotoUrlID=Clng(trim(upload.form("PhotoUrlID")))if PhotoUrlID>0 thenSavePath = "UploadFiles"'存放上传文件的目录elseSavePath = "UploadFiles"'存放上传文件的目录end ifif right(SavePath,1)<>"/" then SavePath=SavePath&"/" '在目录后加(/)for each formName in upload.file '列出所有上传了的文件set ofile=upload.file(formName)'生成一个文件对象oFileSize=ofile.filesizeif oFileSize<100 thenmsg="请先选择你要上传的文件!"FoundErr=Trueelseselect case PhotoUrlIDcase 0if oFileSize>(MaxFileSize*1024) thenmsg="文件大小超过了限制,最大只能上传"&CStr(MaxFileSize)&"K的文件!"FoundErr=trueend ifcase 1if oFileSize>(10000*1024) thenmsg="文件大小超过了限制,最大只能上传10M的文件!"FoundErr=trueend ifend selectend iffileExt=lcase(ofile.FileExt)arrUpFileType=split("gif|jpg|bmp|png|swf|doc|rar|xls","|")'如需添加其它类型的文档请for i=0 to ubound(arrUpFileType)if fileEXT=trim(arrUpFileType(i)) thenEnableUpload=trueexit forend if在这里添加文档后缀名nextif fileEXT="asp" or fileEXT="asa" or fileEXT="aspx" thenEnableUpload=falseif EnableUpload=false thenmsg="这种文件类型不允许上传!\n\n只允许上传这几种文件类型:"&FoundErr=trueend ifstrJS="<SCRIPT language=javascript>" & vbcrlfif FoundErr<>true thenrandomizeranNum=int(900*rnd)+100"gif|jpg|bmp|png|swf|doc|rar|xls"filename=SavePath&year(now)&month(now)&day(now)&hour(now)&minute(n ow)&second(now)&ranNum&"."&fileExtofile.SaveToFile Server.mappath(FileName)'保存文件response.write "文件上传成功!文件大小为:" & cstr(round(oFileSize/1024)) &"K"select case PhotoUrlIDcase 0strJS=strJS&"parent.document.myform.PhotoSize1.value='"cstr(round(oFileSize/ 1024)) & "';" & vbcrlfcase 1strJS=strJS&"parent.document.myform.DefaultPicUrl.value='"fileName & "';" & vbcrlfend selectstrJS=strJS & "alert('" & msg & "');" & vbcrlfstrJS=strJS & "history.go(-1);" & vbcrlfend ifstrJS=strJS & "</script>" & vbcrlfresponse.write strJSset file=nothingnextset upload=nothingend sub%>第四个文件upfile_class.asp,源代码如下<%Dim oUpFileStream'---------------------------------------------------------------------- '文件上传类Class UpFile_ClassDim Form,File,Version,ErrPrivate Sub Class_InitializeVersion = "无惧上传类Version V1.2"Err = -1End SubPrivate Sub Class_Terminate'清除变量及对像If Err < 0 ThenForm.RemoveAllSet Form = Nothing&&File.RemoveAllSet File = NothingoUpFileStream.CloseSet oUpFileStream = NothingEnd IfEnd SubPublic Sub GetData (MaxSize)'定义变量DimRequestBinData,sSpace,bCrLf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,oFileInfoDim iFileSize,sFilePath,sFileType,sFormValue,sFileNameDim iFindStart,iFindEndDim iFormStart,iFormEnd,sFormName'代码开始If Request.TotalBytes < 1 Then'如果没有数据上传Err = 1Exit SubEnd IfIf MaxSize > 0 Then '如果限制大小If Request.TotalBytes > MaxSize ThenErr = 2'如果上传的数据超出限制Exit SubEnd IfEnd IfSet Form = Server.CreateObject ("Scripting.Dictionary") pareMode = 1Set File = Server.CreateObject ("Scripting.Dictionary")pareMode = 1Set tStream = Server.CreateObject ("ADODB.Stream")Set oUpFileStream = Server.CreateObject ("ADODB.Stream") oUpFileStream.Type = 1oUpFileStream.Mode = 3oUpFileStream.OpenoUpFileStream.Write Request.BinaryRead (Request.TotalBytes) oUpFileStream.Position = 0RequestBinData = oUpFileStream.ReadiFormEnd = oUpFileStream.SizebCrLf = ChrB (13) & ChrB (10)'取得每个项目之间的分隔符sSpace = MidB (RequestBinData,1, InStrB (1,RequestBinData,bCrLf)-1) iStart = LenB(sSpace)iFormStart = iStart+2'分解项目DoiInfoEnd = InStrB (iFormStart,RequestBinData,bCrLf & bCrLf)+3 tStream.Type = 1tStream.Mode = 3tStream.OpenoUpFileStream.Position = iFormStartoUpFileStream.CopyTo tStream,iInfoEnd-iFormStarttStream.Position = 0tStream.Type = 2tStream.CharSet = "gb2312"sInfo = tStream.ReadText'取得表单项目名称iFormStart = InStrB (iInfoEnd,RequestBinData,sSpace)-1iFindStart = InStr (22,sInfo,"name=""",1)+6iFindEnd = InStr (iFindStart,sInfo,"""",1)sFormName = Mid(sinfo,iFindStart,iFindEnd-iFindStart)'如果是文件If InStr(45,sInfo,"filename=""",1) > 0 ThenSet oFileInfo = new FileInfo_Class'取得文件属性iFindStart = InStr (iFindEnd,sInfo,"filename=""",1)+10iFindEnd = InStr (iFindStart,sInfo,"""",1)sFileName = Mid(sinfo,iFindStart,iFindEnd-iFindStart) oFileInfo.FileName = Mid (sFileName,InStrRev (sFileName, "\")+1) oFileInfo.FilePath = Left (sFileName,InStrRev (sFileName, "\")) oFileInfo.FileExt = Mid (sFileName,InStrRev (sFileName, ".")+1) iFindStart = InStr (iFindEnd,sInfo,"Content-Type: ",1)+14 iFindEnd = InStr (iFindStart,sInfo,vbCr)oFileInfo.FileType = Mid(sinfo,iFindStart,iFindEnd-iFindStart) oFileInfo.FileStart = iInfoEndoFileInfo.FileSize = iFormStart -iInfoEnd -2oFileInfo.FormName = sFormNamefile.add sFormName,oFileInfoelse'如果是表单项目tStream.ClosetStream.Type = 1tStream.Mode = 3tStream.OpenoUpFileStream.Position = iInfoEndoUpFileStream.CopyTo tStream,iFormStart-iInfoEnd-2 tStream.Position = 0tStream.Type = 2tStream.CharSet = "gb2312"sFormValue = tStream.ReadTextIf Form.Exists (sFormName) ThenForm (sFormName) = Form (sFormName) & ", " & sFormValue elseform.Add sFormName,sFormValueEnd IfEnd IftStream.CloseiFormStart = iFormStart+iStart+2'如果到文件尾了就退出Loop Until(iFormStart+2) >= iFormEndRequestBinData = ""Set tStream = NothingEnd SubEnd Class'------------------------------------------------------------------------------'文件属性类Class FileInfo_ClassDim FormName,FileName,FilePath,FileSize,FileType,FileStart,FileExt'保存文件方法Public Function SaveToFile (Path)if lcase((right(Path,3))<>lcase(FileExt)) then '经典的上传漏洞^_^response.Write("<scriptlanguage=javascript>alert('警告:不允许上传这种文件!');</script>")response.endend ifOn Error Resume NextDim oFileStreamSet oFileStream = CreateObject ("ADODB.Stream")oFileStream.Type = 1oFileStream.Mode = 3oFileStream.OpenoUpFileStream.Position = FileStartoUpFileStream.CopyTo oFileStream,FileSizeoFileStream.SaveToFile Path,2oFileStream.CloseSet oFileStream = NothingEnd Function'取得文件数据Public Function FileDataoUpFileStream.Position = FileStartFileData = oUpFileStream.Read (FileSize)End FunctionEnd Class%>除了上面四个文件夹之外还需要一个名为UploadFiles的文件夹,注意以上的四个文件与文件夹都是放在网站根目录下,也就是同极目录下的,如果目录不同级,请修改路径,同时本程序不仅可以包括jpg,png,gif等类型的图片,还可以上传word、EXECL、记事本、RAR压缩包等,当然上传对大小是有限的,只限定在200K以内,如果超过200K将会出错.。

ASP AspUpload

ASP AspUploadAspUpload是最常使用的ASP上传组件之一,它实际是一个基于COM+的组件,可以内嵌入到ASP程序中实现服务器端的提取、保存和处理文件,并且可以显示上传进度条。

使用AspUpload组件可以实现如下功能:●限制上载文件的大小●设置用户的权限●修改文件属性●同时上传多个文件●能够将文件保存到数据库中●支持文件删除,自动生成与服务器上文件不同名的文件●拥有管理权限的用户甚至可以使用该控件进行远程注册除了上述主要文件上传功能外,该组件还包含文件的操作功能,同时内置了很详细的帮助说明,使初学者很容易掌握。

1.安装AspUpload组件由于AspUpload是由于ASP中可用的第三方组件,因此在开始使用之前首先需要进行下载得到该组件,方法是打开其官方网站“”,并根据提示进行下载,如图7-1所示。

图7-1 下载AspUpload组件下载完成后得到一个可执行文件,双击该文件会显示安装动画并载入安装文件如图7-2所示,待载入完成后将自动打开开始安装界面如图7-3所示。

图7-2 载入AspUpload安装文件图7-3 开始安装在图7-3所示的安装界面中单击Next按钮继续安装,来指定安装路径等组件信息,最终完成安装过程。

在安装路径的Bin目录中有一个AspUpload.dll文件是实现功能的核心文件,如果没有执行安装过程得到了该文件,也可以使用如下的语句来对该组件进行注册。

2.AspUpload组件简单应用AspUpload组件之所以用途最多,是因为它最短可以使用仅2行语句在ASP中添加上传功能。

例如,下面我们通过创建一个简单的实例来介绍AspUpload组件的使用。

在这个实例中用户最多可以上传3个文件,而且还显示了上传的结果。

首先来创建一个ASP文件,再添加一个FORM表单,然后向表单中添加3个上述代码中的每个“<INPUT TYPE=FILE >”标记在浏览器中将显示一个带有“浏览”按钮的文本输入框,单击该按钮可以在弹出的对话框中选择要上传的文件。

ASPUPLOAD上传的例子

Response.Write"<script language=JavaScript>"
Response.Write"alert(""我们只支持上传GIF或JPG图片文件!"");"
Response.Write"javascript:history.back(1);"
' 使用AspUpload组件上传
'-----------------------------------------------
Set upfile = Server.CreateObject("Persits.Upload.1")
fw_size=512000
Server.ScriptTimeOut=60
rs.addnew
rs("mytype")=upfile.form("mytype")
rs("imgurl")=imgurl
rs.update
rs.close
Response.Write"<script language=JavaScript>"
Response.Write"alert(""信息发布成功"");"
ቤተ መጻሕፍቲ ባይዱ Response.Write"</script>"
Response.end
end if
if File.size >fw_size then '文件大小判断
set upfile=nothing

一个完整的php上传功能完整代码(upload代码)

⼀个完整的php上传功能完整代码(upload代码)创建⼀个⽂件上传表单允许⽤户从表单上传⽂件是⾮常有⽤的。

创建上传脚本"upload_file.php" ⽂件含有供上传⽂件的代码:<?phpif ($_FILES["file"]["error"] > 0){echo "错误:" . $_FILES["file"]["error"] . "<br>";}else{echo "上传⽂件名: " . $_FILES["file"]["name"] . "<br>";echo "⽂件类型: " . $_FILES["file"]["type"] . "<br>";echo "⽂件⼤⼩: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";echo "⽂件临时存储的位置: " . $_FILES["file"]["tmp_name"];}?>通过使⽤ PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传⽂件。

第⼀个参数是表单的 input name,第⼆个下标可以是 "name"、"type"、"size"、"tmp_name" 或 "error"。

ASP AspUpload组件获取文件和Form信息

ASP AspUpload组件获取文件和Form信息本章中介绍了如何通过AspUpload组件,实现上传文件的功能,本练习更进一步,在AspUpload组件中使用Form和Files集合来访问Form表单中的每个项。

在本练习中,用户不仅可以选择要上传的文件,还可以对文件添加描述信息。

如下所示为包含上传域和描述输入域的Form表单代码,这里仅设置了两项:这里要注意,对于输入文件描述文本域的type属性为TEXT,name属性为描述名称。

在单击“上传”按钮之后会看到上传文件的数量、文件名称及文件的大小,而且还可以看到上传时输入的文本描述信息。

如图5-8所示为本练习的运行效果。

图5-8 运行结果编写代码时先创建AspUpload组件实例,再调用Save()方法上传文件,然后再通过AspUpload组件提供的方法来显示上传信息。

这部分代码如下所示:注意,在本练习中Form表单现在有两种输入框,TYPE=FILE和TYPE=TEXT。

由于设置Form了ENCTYPE属性,因此不再能通过标准的ASP Response.Form集合来访问Form变量。

这里可以使用Upload.Form来解决这个问题。

这个集合实际或者也能够使用上面示例代码显示的For-Each 语句遍历集合中的项。

Form 集合包含FormItem 类型的对象,只有两个字串属性,Name 和Value(默认属性)。

但是Upload.Form 集合与<INPUT TYPE=FILE>的重要不同是仅仅包含非文件项。

AspUpload 提供另外一个集合Files ,来包含UploadedFile 类型的对象,这种对象代表已经上传的来自<INPUT TYPE=FILE>项的文件。

与Form 集合类型一样,Fi les 集合的项能够通过使用字串或者整形索引,或者一个For-Each 语句访问,像上面的示例显示的一样。

Files 和Form 集合在调用Save 方法前都不会装入,因此在调用在本练习中通过UploadedFile 对象的Path 和Size 属性获得了上传过的文件的目标路径和文件大小。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

AspUpload 一AspUpload 3.0 学习记录&#39; 创建对象Set Upload = Server.CreateObject(&quot;Persits.Upload&quot;)&#39; Enable UTF-8 translationUpload.CodePage = 65001&#39; 判断是否选择文件上传Make sure a file has been selectedIf Not Upload.Files(&quot;FORM_FILE&quot;) Is Nothing Then Response.Write Upload.Files(&quot;FORM_FILE&quot;).PathElseResponse.Write &quot;No files selected.&quot;End If&#39; 限制文件大小为50000 bytes(1Kb = 1024bytes; 1Mb = 1024 Kb)&#39; 设为True时,文件过大就抛出错误信息(Err.Number = 8);&#39; 设为False时,不抛出错误信息Upload.SetMaxSize 50000, True &#39; 单位bytes&#39; 上传文件数Count = Upload.Save(&quot;c:\upload&quot;)&#39; We must call Upload.Save or SaveVirtual before we can use Upload.Form!&#39; 在使用Upload.Form前必须先执行upload.save! Upload.Save &quot;c:\upload&quot;&#39; 设置文件重复时的方式Upload.OverwriteFiles = False&#39; 循环读出表单中每个上传文件For Each File in Upload.FilesResponse.Write &amp; &quot;= &quot; &amp; File.Path &amp; &quot; (&quot; &amp; File.Size &amp;&quot; bytes)&lt;BR&gt;&quot;Response.Write File.Filename &#39; 文件名Response.Write File.Path &#39; 文件路径Response.Write File.Size &#39; 文件大小SQL = &quot;INSERT INTO MYIMAGES(image_blob, filename, description, filesize) VALUES(?, &#39;&quot;SQL = SQL &amp; File.Filename &amp; &quot;&#39;, &#39;&quot; SQL = SQL &amp; Replace(Upload.Form(&quot;DESCR&quot;), &quot;&#39;&quot;, &quot;&#39;&#39;&quot;) &amp; &quot;&#39;, &quot;SQL = SQL &amp; File.Size &amp; &quot;)&quot;File.ToDatabase Connect, SQL&#39; 执行SQL语句,将上传文件存入数据库File.Copy &quot;c:\upload\Folder1&quot; &#39; 将文件复制到Folder1目录下File.Delete &#39; 删除文件!Next&#39; 循环读出表单中其它表单域及其值For Each Item in Upload.FormResponse.Write &amp; &quot;= &quot; &amp; Item.Value &amp; &quot;&lt;BR&gt;&quot;Next&#39; 读取Select值:For Each Item in Upload.FormIf = &quot;FORM_SELECT&quot; ThenResponse.Write Item.Value &amp; &quot;&lt;BR&gt;&quot;End IfNext&#39; 不能使用Upload.Form(&quot;FORM_SELECT&quot;)的方式,这样只能得到选择的第1个项,而不是全部!&#39; 先上传至内存,再保存到文件&#39; we use memory uploads, so we must limit file sizeUpload.SetMaxSize 100000, True&#39; Save to memory. Path parameter is omitted 保存到内存Upload.Save&#39; access subdirectory specified by usersubdir = Upload.Form(&quot;subdir&quot;)&#39; Build path stringPath = &quot;c:\upload\&quot; &amp; subdir&#39; Create path, ignore &quot;already exists&quot; error创建文件夹,忽略已经存在的错误Upload.CreateDirectory Path, True&#39; Save files to it. Our form has only one file item&#39; but this code is generic.For Each File in Upload.FilesFile.SaveAs Path &amp; &quot;\&quot; &amp; File.FileName Response.Write &quot;File saved as &quot; &amp; File.Path &amp; &quot;&lt;BR&gt;&quot;Next&#39; 先上传至内存,再判断是否存在&#39; Check whether a file was selectedSet File = Upload.Files(&quot;FILE1&quot;)If Not File Is Nothing Then&#39; Obtain file nameFilename = file.Filename&#39; check if file exists in c:\upload under this nameIf Upload.FileExists(&quot;c:\upload\&quot; &amp; filename ) Then Response.Write &quot;File with this name already exists.&quot; Else&#39; otherwise save fileFile.SaveAs &quot;c:\upload\&quot; &amp; File.Filename Response.Write &quot;File saved as &quot; &amp; File.PathEnd IfElse &#39; file not selectedResponse.Write &quot;File not selected.&quot;End If&#39; 上传进度条&#39; 前台页面中:Set UploadProgress = Server.CreateObject(&quot;Persits.UploadProgress&quot;)PID = &quot;PID=&quot; &amp; UploadProgress.CreateProgressID() barref = &quot;framebar.asp?to=10&amp;&quot; &amp; PID&#39; 后台页面中:Set Upload = Server.CreateObject(&quot;Persits.Upload&quot;)&#39; This is needed to enable the progress indicatorUpload.ProgressID = Request.QueryString(&quot;PID&quot;) Count = Upload.Save(&quot;c:\upload&quot;)Response.Write Count &amp; &quot; file(s) uploaded to c:\upload&quot;&#39; 判断是否为图片,如果是,……For Each File in Upload.FilesIf File.ImageType = &quot;UNKNOWN&quot; ThenResponse.Write &quot;This is now an image.&quot;Response.EndEnd IfResponse.Write File.Path &amp; &quot;&lt;BR&gt;&quot; Response.Write &quot;Type: &quot; &amp; File.ImageType &amp; &quot;&lt;BR&gt;&quot;Response.Write &quot;Size: &quot; &amp; File.ImageWidth &amp; &quot; x &quot; &amp; File.ImageHeight &amp; &quot; pixels&quot;Next。

相关文档
最新文档