fckeditor中asp版本的文件重命名

       最近不得不研究FCKEDITOR,而且是ASP版本。对其文件上传后的重命名,很郁闷。下面记录我修改的过程,部分函数来自网络。定位到:editor\filemanager\connectors\asp\io.asp

主要是修改:SanitizeFileName这个函数,并添加取得扩展名和文件重命名的方法,详细代码如下:
ASP/Visual Basic复制代码
  1. ' Do a cleanup of the file name to avoid possible problems   
  2. function SanitizeFileName( sNewFileName )   
  3.     Dim oRegex   
  4.     Dim oExt   
  5.     Set oRegex = New RegExp   
  6.     oRegex.Global       = True  
  7.   
  8.     if ( ConfigForceSingleExtension = True ) then   
  9.         oRegex.Pattern = "\.(?![^.]*$)"  
  10.         sNewFileName = oRegex.Replace( sNewFileName, "_" )   
  11.         '取得文件扩展名   
  12.         sNewFileName = makefilename(now())"."&GetExtend(sNewFileName)   
  13.     end if   
  14.   
  15. ' remove \ / | : ? *  " < > and control characters   
  16.     oRegex.Pattern = "(\\|\/|\||:|\?|\*|""|\<|\>|[\u0000-\u001F]|\u007F)"  
  17.     SanitizeFileName = oRegex.Replace( sNewFileName, "_" )  
  18.  
  19.     Set oRegex = Nothing  
  20. end function  
  21.  
  22. Function GetExtend(filename)  
  23.   dim tmp  
  24.   if filename<>"" then  
  25.    tmp=mid(filename,instrrev(filename,".")+1,len(filename)-instrrev(filename,"."))  
  26.    tmp=LCase(tmp)  
  27.    if instr(1,tmp,"asp")>0 or instr(1,tmp,"php")>0 or instr(1,tmp,"php3")>0 or instr(1,tmp,"aspx")>0 then  
  28.     getextend="txt"  
  29.    else  
  30.     getextend=tmp  
  31.    end if  
  32.   else  
  33.    getextend=""  
  34.   end if  
  35.  End Function  
  36.    
  37. function makefilename(fname)   
  38.     fname = fname '前fname为变量,后fname为函数参数引用   
  39.     fname = replace(fname,"-","")   
  40.     fname = replace(fname," ","")   
  41.     fname = replace(fname,":","")   
  42.     fname = replace(fname,"PM","")   
  43.     fname = replace(fname,"AM","")   
  44.     fname = replace(fname,"上午","")   
  45.     fname = replace(fname,"下午","")    
  46.     makefilename = fname   
  47. end function   
懒得改的话就直接拷贝下面的代码:

<%
 ' FCKeditor - The text editor for Internet - http://www.fckeditor.net
 ' Copyright (C) 2003-2009 Frederico Caldeira Knabben
 '
 ' == BEGIN LICENSE ==
 '
 ' Licensed under the terms of any of the following licenses at your
 ' choice:
 '
 '  - GNU General Public License Version 2 or later (the "GPL")
 '    http://www.gnu.org/licenses/gpl.html
 '
 '  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
 '    http://www.gnu.org/licenses/lgpl.html
 '
 '  - Mozilla Public License Version 1.1 or later (the "MPL")
 '    http://www.mozilla.org/MPL/MPL-1.1.html
 '
 ' == END LICENSE ==
 '
 ' This file include IO specific functions used by the ASP Connector.
%>
<%
function CombinePaths( sBasePath, sFolder)
 sFolder = replace(sFolder, "\", "/")
 CombinePaths =  RemoveFromEnd( sBasePath, "/" ) & "/" & RemoveFromStart( sFolder, "/" )
end function

function CombineLocalPaths( sBasePath, sFolder)
 sFolder = replace(sFolder, "/", "\")
 ' The RemoveFrom* functions use RegExp, so we must escape the \
 CombineLocalPaths =  RemoveFromEnd( sBasePath, "\\" ) & "\" & RemoveFromStart( sFolder, "\\" )
end function

Function GetResourceTypePath( resourceType, sCommand )
 if ( sCommand = "QuickUpload") then
  GetResourceTypePath = ConfigQuickUploadPath.Item( resourceType )
 else
  GetResourceTypePath = ConfigFileTypesPath.Item( resourceType )
 end if
end Function

Function GetResourceTypeDirectory( resourceType, sCommand )
 if ( sCommand = "QuickUpload") then

  if ( ConfigQuickUploadAbsolutePath.Item( resourceType ) <> "" ) then
   GetResourceTypeDirectory = ConfigQuickUploadAbsolutePath.Item( resourceType )
  else
   ' Map the "UserFiles" path to a local directory.
   GetResourceTypeDirectory = Server.MapPath( ConfigQuickUploadPath.Item( resourceType ) )
  end if
 else
  if ( ConfigFileTypesAbsolutePath.Item( resourceType ) <> "" ) then
   GetResourceTypeDirectory = ConfigFileTypesAbsolutePath.Item( resourceType )
  else
   ' Map the "UserFiles" path to a local directory.
   GetResourceTypeDirectory = Server.MapPath( ConfigFileTypesPath.Item( resourceType ) )
  end if
 end if
end Function

Function GetUrlFromPath( resourceType, folderPath, sCommand )
 GetUrlFromPath = CombinePaths( GetResourceTypePath( resourceType, sCommand ), folderPath )
End Function

Function RemoveExtension( fileName )
 RemoveExtension = Left( fileName, InStrRev( fileName, "." ) - 1 )
End Function

Function ServerMapFolder( resourceType, folderPath, sCommand )
 Dim sResourceTypePath
 ' Get the resource type directory.
 sResourceTypePath = GetResourceTypeDirectory( resourceType, sCommand )

 ' Ensure that the directory exists.
 CreateServerFolder sResourceTypePath

 ' Return the resource type directory combined with the required path.
 ServerMapFolder = CombineLocalPaths( sResourceTypePath, folderPath )
End Function

Sub CreateServerFolder( folderPath )
 Dim oFSO
 Set oFSO = Server.CreateObject( "Scripting.FileSystemObject" )

 Dim sParent
 sParent = oFSO.GetParentFolderName( folderPath )

 ' If folderPath is a network path (\\server\folder\) then sParent is an empty string.
 ' Get out.
 if (sParent = "") then exit sub

 ' Check if the parent exists, or create it.
 If ( NOT oFSO.FolderExists( sParent ) ) Then CreateServerFolder( sParent )

 If ( oFSO.FolderExists( folderPath ) = False ) Then
  On Error resume next
  oFSO.CreateFolder( folderPath )

  if err.number<>0 then
  dim sErrorNumber
  Dim iErrNumber, sErrDescription
  iErrNumber  = err.number
  sErrDescription = err.Description

  On Error Goto 0

  Select Case iErrNumber
   Case 52
    sErrorNumber = "102" ' Invalid Folder Name.
   Case 70
    sErrorNumber = "103" ' Security Error.
   Case 76
    sErrorNumber = "102" ' Path too long.
   Case Else
    sErrorNumber = "110"
   End Select

   SendError sErrorNumber, "CreateServerFolder(" & folderPath & ") : " & sErrDescription
  end if

 End If

 Set oFSO = Nothing
End Sub

Function IsAllowedExt( extension, resourceType )
 Dim oRE
 Set oRE = New RegExp
 oRE.IgnoreCase = True
 oRE.Global  = True

 Dim sAllowed, sDenied
 sAllowed = ConfigAllowedExtensions.Item( resourceType )
 sDenied  = ConfigDeniedExtensions.Item( resourceType )

 IsAllowedExt = True

 If sDenied <> "" Then
  oRE.Pattern = sDenied
  IsAllowedExt = Not oRE.Test( extension )
 End If

 If IsAllowedExt And sAllowed <> "" Then
  oRE.Pattern  = sAllowed
  IsAllowedExt = oRE.Test( extension )
 End If

 Set oRE = Nothing
End Function

Function IsAllowedType( resourceType )
 Dim oRE
 Set oRE = New RegExp
 oRE.IgnoreCase = False
 oRE.Global  = True
 oRE.Pattern  = "^(" & ConfigAllowedTypes & ")$"

 IsAllowedType = oRE.Test( resourceType )

 Set oRE = Nothing
End Function

Function IsAllowedCommand( sCommand )
 Dim oRE
 Set oRE = New RegExp
 oRE.IgnoreCase = True
 oRE.Global  = True
 oRE.Pattern  = "^(" & ConfigAllowedCommands & ")$"

 IsAllowedCommand = oRE.Test( sCommand )

 Set oRE = Nothing
End Function

function GetCurrentFolder()
 dim sCurrentFolder
 dim oRegex

 sCurrentFolder = Request.QueryString("CurrentFolder")
 If ( sCurrentFolder = "" ) Then sCurrentFolder = "/"

 ' Check the current folder syntax (must begin and start with a slash).
 If ( Right( sCurrentFolder, 1 ) <> "/" ) Then sCurrentFolder = sCurrentFolder & "/"
 If ( Left( sCurrentFolder, 1 ) <> "/" ) Then sCurrentFolder = "/" & sCurrentFolder

 ' Check for invalid folder paths (..)
 If ( InStr( 1, sCurrentFolder, ".." ) <> 0 OR InStr( 1, sCurrentFolder, "\" ) <> 0) Then
  SendError 102, ""
 End If

 Set oRegex = New RegExp
 oRegex.Global  = True
 oRegex.Pattern = "(/\.)|(//)|([\\:\*\?\""\<\>\|]|[\u0000-\u001F]|\u007F)"

 if (oRegex.Test(sCurrentFolder)) Then
  SendError 102, ""
 End If

 GetCurrentFolder = sCurrentFolder
end function

' Do a cleanup of the folder name to avoid possible problems
function SanitizeFolderName( sNewFolderName )
 Dim oRegex
 Set oRegex = New RegExp
 oRegex.Global  = True

' remove . \ / | : ? *  " < > and control characters
 oRegex.Pattern = "(\.|\\|\/|\||:|\?|\*|""|\<|\>|[\u0000-\u001F]|\u007F)"
 SanitizeFolderName = oRegex.Replace( sNewFolderName, "_" )

 Set oRegex = Nothing
end function

' Do a cleanup of the file name to avoid possible problems
function SanitizeFileName( sNewFileName )
 Dim oRegex
 Dim oExt
 Set oRegex = New RegExp
 oRegex.Global  = True

 if ( ConfigForceSingleExtension = True ) then
  oRegex.Pattern = "\.(?![^.]*$)"
  sNewFileName = oRegex.Replace( sNewFileName, "_" )
  '取得文件扩展名
  sNewFileName = makefilename(now())&"."&GetExtend(sNewFileName)
 end if

' remove \ / | : ? *  " < > and control characters
 oRegex.Pattern = "(\\|\/|\||:|\?|\*|""|\<|\>|[\u0000-\u001F]|\u007F)"
 SanitizeFileName = oRegex.Replace( sNewFileName, "_" )

 Set oRegex = Nothing
end function

Function GetExtend(filename)
  dim tmp
  if filename<>"" then
   tmp=mid(filename,instrrev(filename,".")+1,len(filename)-instrrev(filename,"."))
   tmp=LCase(tmp)
   if instr(1,tmp,"asp")>0 or instr(1,tmp,"php")>0 or instr(1,tmp,"php3")>0 or instr(1,tmp,"aspx")>0 then
    getextend="txt"
   else
    getextend=tmp
   end if
  else
   getextend=""
  end if
 End Function
 
function makefilename(fname)
 fname = fname '前fname为变量,后fname为函数参数引用
 fname = replace(fname,"-","")
 fname = replace(fname," ","")
 fname = replace(fname,":","")
 fname = replace(fname,"PM","")
 fname = replace(fname,"AM","")
 fname = replace(fname,"上午","")
 fname = replace(fname,"下午","")
 makefilename = fname
end function


' This is the function that sends the results of the uploading process.
Sub SendUploadResults( errorNumber, fileUrl, fileName, customMsg )
 Response.Clear
 Response.Write "<script type=""text/javascript"">"
 ' Minified version of the document.domain automatic fix script (#1919).
 ' The original script can be found at _dev/domain_fix_template.js
 Response.Write "(function(){var d=document.domain;while (true){try{var A=window.parent.document.domain;break;}catch(e) {};d=d.replace(/.*?(?:\.|$)/,'');if (d.length==0) break;try{document.domain=d;}catch (e){break;}}})();"

 Response.Write "window.parent.OnUploadCompleted(" & errorNumber & ",""" & Replace( fileUrl, """", "\""" ) & """,""" & Replace( fileName, """", "\""" ) & """,""" & Replace( customMsg , """", "\""" ) & """) ;"
 Response.Write "</script>"
 Response.End
End Sub

%>



上一篇:google maps显示搜索控件

下一篇:google地图根据地址定位

留下脚印压缩包密码:sosuo8
名字:
全部评论:
申明:本站部分文章来自网络,由于各种原因对文章的来源无从考究,如果您是“ fckeditor中asp版本的文件重命名 ”的原作者,若侵犯您的版权,请与我联系!在此请您原谅我的幼稚和无知!联系方法:email:ahuinan@21cn.com  QQ:106494262

感谢以下网友对网站提出的建议:
1、感谢“蓝树叶kiss”网友发现一个评论漏洞。(2009-2-28)
2、感谢“陈臣”对程序优化和seo方面的建议。(2009-3-18)
文章档案
  • 作者:阿会楠
  • 来源:搜索吧
  • 日期:2009-8-11 23:37:00
  • 点击:776
网友投票(您觉得这篇文章怎样?)
loadding...请稍侯......