229 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			229 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								<%@ CODEPAGE=65001 %>
							 | 
						|||
| 
								 | 
							
								<% Option Explicit %>
							 | 
						|||
| 
								 | 
							
								<% Response.CodePage=65001 %>
							 | 
						|||
| 
								 | 
							
								<% Response.Charset="UTF-8" %>
							 | 
						|||
| 
								 | 
							
								<!--#include file="JSON_2.0.4.asp"-->
							 | 
						|||
| 
								 | 
							
								<%
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								' KindEditor ASP
							 | 
						|||
| 
								 | 
							
								'
							 | 
						|||
| 
								 | 
							
								' 本ASP程序是演示程序,建议不要直接在实际项目中使用。
							 | 
						|||
| 
								 | 
							
								' 如果您确定直接使用本程序,使用之前请仔细确认相关安全设置。
							 | 
						|||
| 
								 | 
							
								'
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Dim aspUrl, rootPath, rootUrl, fileTypes
							 | 
						|||
| 
								 | 
							
								Dim currentPath, currentUrl, currentDirPath, moveupDirPath
							 | 
						|||
| 
								 | 
							
								Dim path, order, dirName, fso, folder, dir, file, result
							 | 
						|||
| 
								 | 
							
								Dim fileExt, dirCount, fileCount, orderIndex, i, j
							 | 
						|||
| 
								 | 
							
								Dim dirList(), fileList(), isDir, hasFile, filesize, isPhoto, filetype, filename, datetime
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								aspUrl = Request.ServerVariables("SCRIPT_NAME")
							 | 
						|||
| 
								 | 
							
								aspUrl = left(aspUrl, InStrRev(aspUrl, "/"))
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								'根目录路径,可以指定绝对路径,比如 /var/www/attached/
							 | 
						|||
| 
								 | 
							
								rootPath = "../attached/"
							 | 
						|||
| 
								 | 
							
								'根目录URL,可以指定绝对路径,比如 http://www.yoursite.com/attached/
							 | 
						|||
| 
								 | 
							
								rootUrl = aspUrl & "../attached/"
							 | 
						|||
| 
								 | 
							
								'图片扩展名
							 | 
						|||
| 
								 | 
							
								fileTypes = "gif,jpg,jpeg,png,bmp"
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								currentPath = ""
							 | 
						|||
| 
								 | 
							
								currentUrl = ""
							 | 
						|||
| 
								 | 
							
								currentDirPath = ""
							 | 
						|||
| 
								 | 
							
								moveupDirPath = ""
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Set fso = Server.CreateObject("Scripting.FileSystemObject")
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								'目录名
							 | 
						|||
| 
								 | 
							
								dirName = Request.QueryString("dir")
							 | 
						|||
| 
								 | 
							
								If Not isEmpty(dirName) Then
							 | 
						|||
| 
								 | 
							
									If instr(lcase("image,flash,media,file"), dirName) < 1 Then
							 | 
						|||
| 
								 | 
							
										Response.Write "Invalid Directory name."
							 | 
						|||
| 
								 | 
							
										Response.End
							 | 
						|||
| 
								 | 
							
									End If
							 | 
						|||
| 
								 | 
							
									rootPath = rootPath & dirName & "/"
							 | 
						|||
| 
								 | 
							
									rootUrl = rootUrl & dirName & "/"
							 | 
						|||
| 
								 | 
							
									If Not fso.FolderExists(Server.mappath(rootPath)) Then
							 | 
						|||
| 
								 | 
							
										fso.CreateFolder(Server.mappath(rootPath))
							 | 
						|||
| 
								 | 
							
									End If
							 | 
						|||
| 
								 | 
							
								End If
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								'根据path参数,设置各路径和URL
							 | 
						|||
| 
								 | 
							
								path = Request.QueryString("path")
							 | 
						|||
| 
								 | 
							
								If path = "" Then
							 | 
						|||
| 
								 | 
							
									currentPath = Server.MapPath(rootPath) & "\"
							 | 
						|||
| 
								 | 
							
									currentUrl = rootUrl
							 | 
						|||
| 
								 | 
							
									currentDirPath = ""
							 | 
						|||
| 
								 | 
							
									moveupDirPath = ""
							 | 
						|||
| 
								 | 
							
								Else
							 | 
						|||
| 
								 | 
							
									currentPath = Server.MapPath(rootPath & path) & "\"
							 | 
						|||
| 
								 | 
							
									currentUrl = rootUrl + path
							 | 
						|||
| 
								 | 
							
									currentDirPath = path
							 | 
						|||
| 
								 | 
							
									moveupDirPath = RegexReplace(currentDirPath, "(.*?)[^\/]+\/$", "$1")
							 | 
						|||
| 
								 | 
							
								End If
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Set folder = fso.GetFolder(currentPath)
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								'排序形式,name or size or type
							 | 
						|||
| 
								 | 
							
								order = lcase(Request.QueryString("order"))
							 | 
						|||
| 
								 | 
							
								Select Case order
							 | 
						|||
| 
								 | 
							
									Case "type" orderIndex = 4
							 | 
						|||
| 
								 | 
							
									Case "size" orderIndex = 2
							 | 
						|||
| 
								 | 
							
									Case Else  orderIndex = 5
							 | 
						|||
| 
								 | 
							
								End Select
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								'不允许使用..移动到上一级目录
							 | 
						|||
| 
								 | 
							
								If RegexIsMatch(path, "\.\.") Then
							 | 
						|||
| 
								 | 
							
									Response.Write "Access is not allowed."
							 | 
						|||
| 
								 | 
							
									Response.End
							 | 
						|||
| 
								 | 
							
								End If
							 | 
						|||
| 
								 | 
							
								'最后一个字符不是/
							 | 
						|||
| 
								 | 
							
								If path <> "" And Not RegexIsMatch(path, "\/$") Then
							 | 
						|||
| 
								 | 
							
									Response.Write "Parameter is not allowed."
							 | 
						|||
| 
								 | 
							
									Response.End
							 | 
						|||
| 
								 | 
							
								End If
							 | 
						|||
| 
								 | 
							
								'目录不存在或不是目录
							 | 
						|||
| 
								 | 
							
								If Not DirectoryExists(currentPath) Then
							 | 
						|||
| 
								 | 
							
									Response.Write "Directory does not exist."
							 | 
						|||
| 
								 | 
							
									Response.End
							 | 
						|||
| 
								 | 
							
								End If
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Set result = jsObject()
							 | 
						|||
| 
								 | 
							
								'相对于根目录的上一级目录
							 | 
						|||
| 
								 | 
							
								result("moveup_dir_path") = moveupDirPath
							 | 
						|||
| 
								 | 
							
								'相对于根目录的当前目录
							 | 
						|||
| 
								 | 
							
								result("current_dir_path") = currentDirPath
							 | 
						|||
| 
								 | 
							
								'当前目录的URL
							 | 
						|||
| 
								 | 
							
								result("current_url") = currentUrl
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								'文件数
							 | 
						|||
| 
								 | 
							
								dirCount = folder.SubFolders.count
							 | 
						|||
| 
								 | 
							
								fileCount = folder.Files.count
							 | 
						|||
| 
								 | 
							
								result("total_count") = dirCount + fileCount
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								ReDim dirList(dirCount)
							 | 
						|||
| 
								 | 
							
								i = 0
							 | 
						|||
| 
								 | 
							
								For Each dir in folder.SubFolders
							 | 
						|||
| 
								 | 
							
									isDir = True
							 | 
						|||
| 
								 | 
							
									hasFile = (dir.Files.count > 0)
							 | 
						|||
| 
								 | 
							
									filesize = 0
							 | 
						|||
| 
								 | 
							
									isPhoto = False
							 | 
						|||
| 
								 | 
							
									filetype = ""
							 | 
						|||
| 
								 | 
							
									filename = dir.name
							 | 
						|||
| 
								 | 
							
									datetime = FormatDate(dir.DateLastModified)
							 | 
						|||
| 
								 | 
							
									dirList(i) = Array(isDir, hasFile, filesize, isPhoto, filetype, filename, datetime)
							 | 
						|||
| 
								 | 
							
									i = i + 1
							 | 
						|||
| 
								 | 
							
								Next
							 | 
						|||
| 
								 | 
							
								ReDim fileList(fileCount)
							 | 
						|||
| 
								 | 
							
								i = 0
							 | 
						|||
| 
								 | 
							
								For Each file in folder.Files
							 | 
						|||
| 
								 | 
							
									fileExt = lcase(mid(file.name, InStrRev(file.name, ".") + 1))
							 | 
						|||
| 
								 | 
							
									isDir = False
							 | 
						|||
| 
								 | 
							
									hasFile = False
							 | 
						|||
| 
								 | 
							
									filesize = file.size
							 | 
						|||
| 
								 | 
							
									isPhoto = (instr(lcase(fileTypes), fileExt) > 0)
							 | 
						|||
| 
								 | 
							
									filetype = fileExt
							 | 
						|||
| 
								 | 
							
									filename = file.name
							 | 
						|||
| 
								 | 
							
									datetime = FormatDate(file.DateLastModified)
							 | 
						|||
| 
								 | 
							
									fileList(i) = Array(isDir, hasFile, filesize, isPhoto, filetype, filename, datetime)
							 | 
						|||
| 
								 | 
							
									i = i + 1
							 | 
						|||
| 
								 | 
							
								Next
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								'排序
							 | 
						|||
| 
								 | 
							
								Dim minidx, temp
							 | 
						|||
| 
								 | 
							
								For i = 0 To dirCount - 2
							 | 
						|||
| 
								 | 
							
									minidx = i
							 | 
						|||
| 
								 | 
							
									For j = i + 1 To dirCount - 1
							 | 
						|||
| 
								 | 
							
										If (dirList(minidx)(5) > dirList(j)(5)) Then
							 | 
						|||
| 
								 | 
							
											minidx = j
							 | 
						|||
| 
								 | 
							
										End If
							 | 
						|||
| 
								 | 
							
									Next
							 | 
						|||
| 
								 | 
							
									If minidx <> i Then
							 | 
						|||
| 
								 | 
							
										temp = dirList(minidx)
							 | 
						|||
| 
								 | 
							
										dirList(minidx) = dirList(i)
							 | 
						|||
| 
								 | 
							
										dirList(i) = temp
							 | 
						|||
| 
								 | 
							
									End If
							 | 
						|||
| 
								 | 
							
								Next
							 | 
						|||
| 
								 | 
							
								For i = 0 To fileCount - 2
							 | 
						|||
| 
								 | 
							
									minidx = i
							 | 
						|||
| 
								 | 
							
									For j = i + 1 To fileCount - 1
							 | 
						|||
| 
								 | 
							
										If (fileList(minidx)(orderIndex) > fileList(j)(orderIndex)) Then
							 | 
						|||
| 
								 | 
							
											minidx = j
							 | 
						|||
| 
								 | 
							
										End If
							 | 
						|||
| 
								 | 
							
									Next
							 | 
						|||
| 
								 | 
							
									If minidx <> i Then
							 | 
						|||
| 
								 | 
							
										temp = fileList(minidx)
							 | 
						|||
| 
								 | 
							
										fileList(minidx) = fileList(i)
							 | 
						|||
| 
								 | 
							
										fileList(i) = temp
							 | 
						|||
| 
								 | 
							
									End If
							 | 
						|||
| 
								 | 
							
								Next
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Set result("file_list") = jsArray()
							 | 
						|||
| 
								 | 
							
								For i = 0 To dirCount - 1
							 | 
						|||
| 
								 | 
							
									Set result("file_list")(Null) = jsObject()
							 | 
						|||
| 
								 | 
							
									result("file_list")(Null)("is_dir") = dirList(i)(0)
							 | 
						|||
| 
								 | 
							
									result("file_list")(Null)("has_file") = dirList(i)(1)
							 | 
						|||
| 
								 | 
							
									result("file_list")(Null)("filesize") = dirList(i)(2)
							 | 
						|||
| 
								 | 
							
									result("file_list")(Null)("is_photo") = dirList(i)(3)
							 | 
						|||
| 
								 | 
							
									result("file_list")(Null)("filetype") = dirList(i)(4)
							 | 
						|||
| 
								 | 
							
									result("file_list")(Null)("filename") = dirList(i)(5)
							 | 
						|||
| 
								 | 
							
									result("file_list")(Null)("datetime") = dirList(i)(6)
							 | 
						|||
| 
								 | 
							
								Next
							 | 
						|||
| 
								 | 
							
								For i = 0 To fileCount - 1
							 | 
						|||
| 
								 | 
							
									Set result("file_list")(Null) = jsObject()
							 | 
						|||
| 
								 | 
							
									result("file_list")(Null)("is_dir") = fileList(i)(0)
							 | 
						|||
| 
								 | 
							
									result("file_list")(Null)("has_file") = fileList(i)(1)
							 | 
						|||
| 
								 | 
							
									result("file_list")(Null)("filesize") = fileList(i)(2)
							 | 
						|||
| 
								 | 
							
									result("file_list")(Null)("is_photo") = fileList(i)(3)
							 | 
						|||
| 
								 | 
							
									result("file_list")(Null)("filetype") = fileList(i)(4)
							 | 
						|||
| 
								 | 
							
									result("file_list")(Null)("filename") = fileList(i)(5)
							 | 
						|||
| 
								 | 
							
									result("file_list")(Null)("datetime") = fileList(i)(6)
							 | 
						|||
| 
								 | 
							
								Next
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								'输出JSON字符串
							 | 
						|||
| 
								 | 
							
								Response.AddHeader "Content-Type", "text/html; charset=UTF-8"
							 | 
						|||
| 
								 | 
							
								result.Flush
							 | 
						|||
| 
								 | 
							
								Response.End
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								'自定义函数
							 | 
						|||
| 
								 | 
							
								Function DirectoryExists(dirPath)
							 | 
						|||
| 
								 | 
							
									Dim fso
							 | 
						|||
| 
								 | 
							
									Set fso = Server.CreateObject("Scripting.FileSystemObject")
							 | 
						|||
| 
								 | 
							
									DirectoryExists = fso.FolderExists(dirPath)
							 | 
						|||
| 
								 | 
							
								End Function
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Function RegexIsMatch(subject, pattern)
							 | 
						|||
| 
								 | 
							
									Dim reg
							 | 
						|||
| 
								 | 
							
									Set reg = New RegExp
							 | 
						|||
| 
								 | 
							
									reg.Global = True
							 | 
						|||
| 
								 | 
							
									reg.MultiLine = True
							 | 
						|||
| 
								 | 
							
									reg.Pattern = pattern
							 | 
						|||
| 
								 | 
							
									RegexIsMatch = reg.Test(subject)
							 | 
						|||
| 
								 | 
							
								End Function
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Function RegexReplace(subject, pattern, replacement)
							 | 
						|||
| 
								 | 
							
									Dim reg
							 | 
						|||
| 
								 | 
							
									Set reg = New RegExp
							 | 
						|||
| 
								 | 
							
									reg.Global = True
							 | 
						|||
| 
								 | 
							
									reg.MultiLine = True
							 | 
						|||
| 
								 | 
							
									reg.Pattern = pattern
							 | 
						|||
| 
								 | 
							
									RegexReplace = reg.Replace(subject, replacement)
							 | 
						|||
| 
								 | 
							
								End Function
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Public Function FormatDate(datetime)
							 | 
						|||
| 
								 | 
							
									Dim y, m, d, h, i, s
							 | 
						|||
| 
								 | 
							
									y = CStr(Year(datetime))
							 | 
						|||
| 
								 | 
							
									m = CStr(Month(datetime))
							 | 
						|||
| 
								 | 
							
									If Len(m) = 1 Then m = "0" & m
							 | 
						|||
| 
								 | 
							
									d = CStr(Day(datetime))
							 | 
						|||
| 
								 | 
							
									If Len(d) = 1 Then d = "0" & d
							 | 
						|||
| 
								 | 
							
									h = CStr(Hour(datetime))
							 | 
						|||
| 
								 | 
							
									If Len(h) = 1 Then h = "0" & h
							 | 
						|||
| 
								 | 
							
									i = CStr(Minute(datetime))
							 | 
						|||
| 
								 | 
							
									If Len(i) = 1 Then i = "0" & i
							 | 
						|||
| 
								 | 
							
									s = CStr(Second(datetime))
							 | 
						|||
| 
								 | 
							
									If Len(s) = 1 Then s = "0" & s
							 | 
						|||
| 
								 | 
							
									FormatDate = y & "-" & m & "-" & d & " " & h & ":" & i & ":" & s
							 | 
						|||
| 
								 | 
							
								End Function
							 | 
						|||
| 
								 | 
							
								%>
							 |