ASP实例:一个简单的ASP无组件上传类
简单的ASP无组件上传类,发出来让大家看看。可以做做实验!
以下为引用的内容:
<>
<%
varself=Request.serverVariables("SCRIPT_NAME");
if(Request.serverVariables("REQUEST_METHOD")=="POST")
{
varoo=newuploadFile();
oo.path="myFile";//存放路径,为空表示当前路径,默认为uploadFile
oo.named="file";//命名方式,date表示用日期来命名,file表示用文件名本身,默认为file
oo.ext="all";//允许上传的扩展名,all表示都允许,默认为all
oo.over=true;//当存在相同文件名时是否覆盖,默认为false
oo.size=1*1024*1024;//最大字节数限制,默认为1G
oo.upload();
Response.write('<scripttype="text/javascript">location.replace("'+self+'")</script>');
}
//ASP无组件上传类
functionuploadFile()
{
varbLen=Request.totalBytes;
varbText=Request.binaryRead(bLen);
varoo=Server.createObject("ADODB.Stream");
oo.mode=3;
this.path="uploadFile";
this.named="file";
this.ext="all";
this.over=false;
this.size=1*1024*1024*1024;//1GB
//文件上传
this.upload=function()
{
varo=this.getInfo();
if(o.size>this.size)
{
alert("文件过大,不能上传!");
return;
}
varf=this.getFileName();
varext=f.replace(/^.+./,"");
if(this.ext!="all"&&!newRegExp(this.ext.replace(/,/g,"|"),"ig").test(ext))
{
alert("目前暂不支持扩展名为"+ext+"的文件上传!");
return;
}
if(this.named=="date")
{
f=newDate().toLocaleString().replace(/D/g,"")+"."+ext;
}
oo.open();
oo.type=1;
oo.write(o.bin);
this.path=this.path.replace(/[^/\]$/,"$&/");
varfso=Server.createObject("Scripting.FileSystemObject");
if(this.path!=""&&!fso.folderExists(Server.mapPath(this.path)))
{
fso.createFolder(Server.mapPath(this.path));
}
try
{
oo.saveToFile(Server.mapPath(this.path+f),this.over?2:1);
alert("上传成功!");
}
catch(e)
{
alert("对不起,此文件已存在!");
}
oo.close();
delete(oo);
}
//获取二进制和文件字节数
this.getInfo=function()
{
oo.open();
oo.type=1;
oo.write(bText);
oo.position=0;
oo.type=2;
oo.charset="unicode";
vargbCode=escape(oo.readText()).replace(/%u(..)(..)/g,"%$2%$1");
varsPos=gbCode.indexOf("%0D%0A%0D%0A")+12;
varsLength=bLen-(gbCode.substring(0,gbCode.indexOf("%0D%0A")).length/3)-sPos/3-6;
oo.close();
oo.open();
oo.type=1;
oo.write(bText);
oo.position=sPos/3;
varbFile=oo.read(sLength);
oo.close();
return{bin:bFile,size:sLength};
}
//获取文件名
this.getFileName=function()
{
oo.open();
oo.type=2;
oo.writeText(bText);
oo.position=0;
oo.charset="gb2312";
varfileName=oo.readText().match(/filename="(.+?)"/i)[1].split("];
oo.close();
returnfileName;
}
functionalert(msg)
{
Response.write('<scripttype="text/javascript">alert("'+msg+'");</script>');
}
}
%>
<html>
<head>
<title>ASP无组件上传类</title>
<metahttp-equiv="content-Type"content="text/html;charset=gb2312">
</head>
<body>
<formaction="<%=self%>"method="post"enctype="multipart/form-data"onSubmit="return(this.upFile.value!='');">
<inputtype="file"name="upFile"/>
<inputtype="submit"value="上传文件"/>
</form>
</body>
</html>