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
|
|||
|
%>
|