Eu tenho que estudar o FCKeditor recentemente e é a versão ASP. Renomeie o arquivo após o upload, é muito deprimente. Os registros a seguir registram meu processo de modificação e algumas funções vêm da rede. Posicionado para: Editor/FileManager/conectores/asp/io.asp
O objetivo principal é modificar a função: SanitizeFilename e adicionar um método para obter a extensão e a renomeação de arquivos.
A cópia do código é a seguinte:
'Faça uma limpeza do nome do arquivo para evitar possíveis problemas
Função SanitizeFilename (SnewFilename)
Dim oregex
Dim oext
Set oregex = novo regexp
oregex.global = true
if (configforcecesinglextension = true) então
oregex.pattern = /.(?!
snewfilename = oregex.replace (snewfilename, _)
'Obtenha a extensão do arquivo
snewfilename = makefilename (agora ()). & getExtend (snewfilename)
final se
'Remover / / |
oregex.pattern = (// | // |/|: |/? |/*||/<| ////> | [/u0000-/u001f] |/u007f)
SanitizeFilename = Oregex.replace (SnewFileName, _)
Set oregex = nada
Função final
Função getExtend (nome do arquivo)
Dim TMP
Se o nome do arquivo <> então
tmp = MID (nome do arquivo, instrumev (nome do arquivo,.)+1, len (nome do arquivo) -Instrrev (nome do arquivo ,.))
tmp = lcase (tmp)
Se Instr (1, TMP, ASP)> 0 ou Instr (1, TMP, PHP)> 0 ou Instr (1, TMP, Php3)> 0 ou Instr (1, TMP, ASPX)> 0 Então
getExtend = txt
outro
getExtend = tmp
final se
outro
getExtend =
final se
Função final
função makefilename (fname)
fname = fname 'o primeiro fname é uma variável, e o último fname é uma referência de parâmetro de função
fname = substituir (fname,-,)
fname = substituir (fname ,,)
fname = substituir (fname ,:)
fname = substituir (fname, pm,)
fname = substituir (fname, am,)
fname = substituir (fname, manhã)
fname = substituir (fname, tarde,)
makefilename = fname
Função final
Se você está com preguiça de mudar, basta copiar o seguinte código:
A cópia do código é a seguinte:
<%
'Fckeditor - o editor de texto da Internet - http://www.fckeditor.net
'Copyright (c) 2003-2009 Frederico Caldeira Knabben
'
'== BEGIN Licença ==
'
'Licenciados sob os termos de qualquer uma das seguintes licenças em seu
' escolha:
'
' - GNU Licença pública em geral versão 2 ou mais tarde (a GPL)
'http://www.gnu.org/license/gpl.html
'
' - GNU menor licença pública em geral versão 2.1 ou posterior (o LGPL)
'http://www.gnu.org/license/lgpl.html
'
' - Mozilla Public License versão 1.1 ou mais tarde (o MPL)
'http://www.mozilla.org/mpl/mpl-1.1.html
'
'== Licença final ==
'
'Este arquivo inclui funções específicas de IO usadas pelo conector ASP.
%>
<%
Função Combinepaths (sbasepath, sfolder)
sfolder = substituir (sfolder, /, /)
CombinePaths = Remonefromend (sbasepath, /) & / & removefromstart (sfolder, /)
Função final
função combinelocalpaths (sbasepath, sfolder)
sfolder = substituir (sfolder, /, /)
'As funções removidas* usam regexp, então devemos escapar do /
CombineLocalPaths = RemowFromend (Sbasepath, //) & / & RemowFromStart (Solder, //)
Função final
Função getResourCetypepath (ResourceType, Scommand)
se (scommand = quickUpload) então
GetResourCetyPePath = configquickuploadpath.item (ResourceType)
outro
GetResourceTypePath = configFiletyPespath.item (ResourceType)
final se
Função final
Função getResourCetyPedirectory (ResourceType, Scommand)
se (scommand = quickUpload) então
if (configquickUploadabsolutepath.item (ResourceType) <>) Então
GetResourCetyPedirectory = configquickupploadabsolutepath.item (ResourceType)
outro
'Mapeie o caminho do userfiles para um diretório local.
GetResourCetyPedirectory = server.mappath (ConfigQuickUploadPath.item (ResourceType))
final se
outro
if (configFiletyPesabsolutepath.item (ResourceType) <>) Então
GetResourCetyPedirectory = configFiletyPesabsolutepath.item (ResourceType)
outro
'Mapeie o caminho do userfiles para um diretório local.
GetResourCetyPedirectory = server.mappath (configfiletyPespath.item (ResourceType))
final se
final se
Função final
Função geturlfrompath (resourceType, pastaPath, scommand)
GetUrlfrompath = CombinePaths (getResourCetypepath (ResourceType, Scommand), FolderPath)
Função final
Função removextension (nome do arquivo)
Remonextension = esquerda (nome do arquivo, instrumev (nome do arquivo,.) - 1)
Função final
Função ServermapFolder (ResourceType, FolderPath, Scommand)
SresourCetyPepath dim
'Obtenha o diretório do tipo de recurso.
SresourceTypepath = getResourCetyPedirectory (ResourceType, Scommand)
'Garanta que o diretório exista.
CreateServerFolder SresourCetypepath
'Retorne o diretório do tipo de recurso combinado com o caminho necessário.
ServerMapFolder = CombineLocalPaths (SresourceTypepath, FolderPath)
Função final
Sub CreateServerFolder (FolderPath)
Dim OFSO
Conjunto OFSO = server.createObject (script.filesystemoBject)
Dim, escuro
Sparent = Ofso.getParentFolderName (FolderPath)
'Se o FolderPath for um caminho de rede (// server/pasta/), o Sparent é uma string vazia.
' Sair.
if (sparent =) então saia submarino
'Verifique se o pai existe ou crie -o.
Se (não Ofso.Polderexists (Sparent)) então CreateServerFolder (Sparent)
If (OFSO.Polderexists (FolderPath) = false) então
Em erro de erro em seguida
OFSO.CREATEFOLDER (FolderPath)
se err.number <> 0 então
Dim serrornumber
Dim IerrNumber, serrdescription
ierrnumber = err.number
serrdescription = err.description
ON ERRO GOTO 0
Selecione Caso IerrNumber
Caso 52
serrornumber = 102 'Nome da pasta inválida.
Caso 70
serrornumber = 103 'Erro de segurança.
Caso 76
serrornumber = 102 'Caminho por muito tempo.
Caso mais
serrornumber = 110
Final Selecione
SendError Serrornumber, CreateServerFolder (& FolderPath &): & Serrdescription
final se
Final se
Conjunto de também = nada
Final sub
Função isallowedext (extensão, resourceType)
Minério escuro
Set minério = novo regexp
ore.ignorecase = true
ore.global = true
Escuro Sallowed, Sdenied
sallowed = configallowextensions.item (ResourceType)
sdenied = configdeniedExtensions.item (ResourceType)
Isallowedext = true
Se sdenied <> então
Ore.pattern = sdenied
Isallowedext = não Ore.test (extensão)
Final se
Se Isallowedext e Sallowed <> então
Ore.Pattern = Sallowed
Isallowedext = ore.test (extensão)
Final se
Definir minério = nada
Função final
Função isallowedType (ResourceType)
Minério escuro
Set minério = novo regexp
ore.ignorecase = false
ore.global = true
ore.pattern = ^(& configallowedTypes &) $
IsallowedType = ore.test (ResourceType)
Definir minério = nada
Função final
Função isallowedCommand (scommand)
Minério escuro
Set minério = novo regexp
ore.ignorecase = true
ore.global = true
ore.pattern = ^(& configallowedCommands &) $
IsallowedCommand = Ore.test (Scommand)
Definir minério = nada
Função final
função getCurrentFolder ()
Dim ScurrentFolder
Dim oregex
ScurrentFolder = request.QueryString (CurrentFolder)
If (scurrentfolder =) então scurrentfolder = /
'Verifique a sintaxe da pasta atual (deve começar e começar com uma barra).
If (certo (scurrentfolder, 1) <> /) então scurrentfolder = scurrentfolder & /
If (esquerda (scurrentfolder, 1) <> /) então scurrentfolder = / & scurrentfolder
'Verifique os caminhos da pasta inválida (..)
If (Instr (1, ScurrentFolder, ..) <> 0 ou Instr (1, ScurrentFolder, /) <> 0) então
SendError 102,
Final se
Set oregex = novo regexp
oregex.global = true
oregex.pattern = (//.)|(//)|(///:/*/?///</>/|-them
if (oregex.test (scurrentfolder)) então
SendError 102,
Final se
GetCurrentFolder = scurrentfolder
Função final
'Faça uma limpeza do nome da pasta para evitar possíveis problemas
Função SanitizeFolderName (nome de senão)
Dim oregex
Set oregex = novo regexp
oregex.global = true
'Remover.
oregex.pattern = (/.|///|//|/ Can!
SanitizeFoldername = Oregex.Replace (nome de senão, _)
Set oregex = nada
Função final
'Faça uma limpeza do nome do arquivo para evitar possíveis problemas
Função SanitizeFilename (SnewFilename)
Dim oregex
Dim oext
Set oregex = novo regexp
oregex.global = true
if (configforcecesinglextension = true) então
oregex.pattern = /.(?!
snewfilename = oregex.replace (snewfilename, _)
'Obtenha a extensão do arquivo
snewfilename = makefilename (agora ()) &. & getExtend (snewfilename)
final se
'Remover / / |
oregex.pattern = (// | // |/|: |/? |/*||/<| ////> | [/u0000-/u001f] |/u007f)
SanitizeFilename = Oregex.replace (SnewFileName, _)
Set oregex = nada
Função final
Função getExtend (nome do arquivo)
Dim TMP
Se o nome do arquivo <> então
tmp = MID (nome do arquivo, instrumev (nome do arquivo,.)+1, len (nome do arquivo) -Instrrev (nome do arquivo ,.))
tmp = lcase (tmp)
Se Instr (1, TMP, ASP)> 0 ou Instr (1, TMP, PHP)> 0 ou Instr (1, TMP, Php3)> 0 ou Instr (1, TMP, ASPX)> 0 Então
getExtend = txt
outro
getExtend = tmp
final se
outro
getExtend =
final se
Função final
função makefilename (fname)
fname = fname 'o primeiro fname é uma variável, e o último fname é uma referência de parâmetro de função
fname = substituir (fname,-,)
fname = substituir (fname ,,)
fname = substituir (fname ,:)
fname = substituir (fname, pm,)
fname = substituir (fname, am,)
fname = substituir (fname, manhã)
fname = substituir (fname, tarde,)
makefilename = fname
Função final
'Esta é a função que envia os resultados do processo de upload.
Sub SendUploadResults (ErrorNumber, Fileurl, nome do arquivo, Custommsg)
Response.clear
Response.write <script type = text/javascript>
'Versão Miniificada do Document.Domain Automatic Fix Script (#1919).
'O script original pode ser encontrado em _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 (/ .*? (?:/. ;
Response.Write window.parent.onUploadCompleted (& errornumber &, & reply (fileurl ,, /) &, &, substituir (nome do arquivo ,, /) &, & substituir (custommsg, /) &);
Response.Write </sCript>
Resposta.END
Final sub
%>