来源:自学PHP网 时间:2014-12-14 21:28 作者: 阅读:次
[导读] 最近不得不研究FCKEDITOR,而且是ASP版本。对其文件上传后的重命名,很郁闷。下面记录我修改的过程,部分函数来自网络。...
定位到:editor\filemanager\connectors\asp\io.asp
主要是修改:SanitizeFileName这个函数,并添加取得扩展名和文件重命名的方法,详细代码如下: 复制代码 代码如下: ' 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 懒得改的话就直接拷贝下面的代码: 复制代码 代码如下: <% ' 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 %> |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com