日期:2010-05-10  浏览次数:21066 次

这是我从我以前写过的程序中分离出来的,由于这段代码是针对整体成体程序写的,因此功能非常简单,而且对于上传的数据也没有严格的限制,所以难免会出现这样或那样的错误。

我贴着篇文章主要是让大家了解一下无组件上传的思路,而不是让大家使用的。

<%

'Yanhang.00上传程序V1.0
'1.0版本的程序是从以前的程序修改过来的,但是可能还是仍有不足,如果你发现任何错误,请写信通知我,谢谢!
'请在使用前先修改下面的信息
'目前本程序我认为最大的不足就是只能用系统时间定义文件名,不能使用源文件名,这一点我会在以后的版本中改进。
'Enjoy yourself!


'程序制作:yanhang
'email:yanhang@msn.com
'技术支持:http://yanhang00.yeah.net
'本程序要运行在ado 2.5以上版本环境下


'#####################请修改以下信息#####################################
 dim siteurl,picsavefolder,limitbyte,lsfilename
 siteurl = "http://www.yours.com"  '网站地址(末尾不要有"/"符号)
 picsavefolder = "uploadfile/"   '图片保存文件夹(以"/"符号结尾)
 limitbyte = 300       '文件大小限制,单位:k
'######################################################################


'#####################以下信息请不要修改#################################

if request.totalbytes < 192 then
%>
<html>
<head>
<title>文件上传</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<BODY>
  <FORM name="form2" METHOD=POST ACTION="upload.asp" enctype="multipart/form-data">
    请选择文件:
 <INPUT TYPE="file" NAME="file">
 <INPUT TYPE="submit" value="上传">     大小限制:<%=limitbyte%>k
  </FORM>
</BODY>
</html>
<%
else
 dim contentlen
 '接收表单信息
 contentlen=request.totalbytes

 '检测文件大小
 if contentlen>limitbyte*1024 then
  response.write "文件超过"&limitbyte&"k,不允许上传!"
 else

 dim content
 '读取上传文件信息
 content=request.binaryread(request.totalbytes)

 '二进制相互转换函数
 Function getByteString(StringStr)
  For i=1 to Len(StringStr)
    char=Mid(StringStr,i,1)
   getByteString=getByteString&chrB(AscB(char))
  Next
 End Function
 Function getString(StringBin)
        getString =""
        For intCount = 1 to LenB(StringBin)
         getString = getString & chr(AscB(MidB(StringBin,intCount,1)))
        Next
    End Function

 '处理数据
 dim upbeg,upend,lineone,linetwo,linethree,line1,line2,line3
 upbeg=1
 upend=instrb(upbeg,content,getbytestring(chr(10)))
 lineone=midb(content,upbeg,upend-upbeg)
 upbeg=upend+1
 line1=lenb(lineone)
 upend=instrb(upbeg,content,getbytestring(chr(10)))
 linetwo=midb(content,upbeg,upend-upbeg)
 upbeg=upend+1
 line2=lenb(linetwo)
 upend=instrb(upbeg,content,getbytestring(chr(13)))
 linethree=midb(content,upbeg,upend-upbeg)
 line3=lenb(linethree)
 
 '获得文件名
 dim pp,checknametemp,checklen,checkname,filename
 pp=instrb(1,linetwo,getbytestring(chr(46)))
 checknametemp=rightb(linetwo,line2-pp+1)
 checklen=instrb(1,checknametemp,getbytestring(chr(34)))
 checkname=getstring(leftb(checknametemp,checklen-1))
 
 '检测文件后缀
 if checkname<>"Content-Disposition: form-data; name=" then
 if checkname=".txt" or checkname=".doc" or checkname=".gif" or checkname=".jpg" or checkname=".jpeg" or checkname=".zip" or checkname=".rar" or checkname=".bmp" or checkname=".png" or checkname=".tiff" then

 '定义文件名
 filename=year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&checkname
 
 '上传文