Je dois étudier FckEditor récemment, et c'est la version ASP. Renommez le fichier après le téléchargement, il est très déprimant. Le suivant enregistre mon processus de modification et certaines fonctions proviennent du réseau. Positionné sur: éditeur / filemanager / connecteurs / asp / io.asp
L'objectif principal est de modifier la fonction: SanitizeFileName et ajouter une méthode pour obtenir le renomment d'extension et de fichier.
La copie de code est la suivante:
«Faites un nettoyage du nom du fichier pour éviter les problèmes possibles
fonction SensizeFileName (snewFilename)
Minége
Sombre
Définir Oregex = New Regexp
oregex.global = true
if (configForcesHatleExtension = true) alors
oregex.pattern = /.(?!*^.
snewFileName = oregex.replace (snewFileName, _)
'Obtenez l'extension du fichier
snewFileName = MakeFileName (maintenant ()). & getExtend (snewFileName)
terminer si
'supprimer / / |
oregex.pattern = (// | // | / |: | /? | / * || / <| /////> | [/ u0000- / u001f] | / u007f)
SavenzeFileName = Oregex.replace (SnewFileName, _)
Définir Oregex = Rien
fonction finale
Fonction getExtend (nom de fichier)
TMP DIM
Si le nom de fichier <> alors
tmp = mid (nom de fichier, instruc (nom de fichier,.) + 1, len (nom de fichier) -intrrev (nom de fichier ,.)))
TMP = LCase (TMP)
Si instr (1, tmp, asp)> 0 ou instr (1, tmp, php)> 0 ou instlin (1, tmp, php3)> 0 ou instlin (1, tmp, aspx)> 0 puis
getExtend = txt
autre
getExtend = TMP
terminer si
autre
getExtend =
terminer si
Fonction finale
fonction makeFileName (fname)
FNAME = FNAME 'Le premier FNAME est une variable, et ce dernier FNAME est une référence de paramètre de fonction
fname = remplacer (fname, -,)
fname = remplacer (fname ,,)
fname = remplacer (fname ,:,)
fname = remplacer (fname, pm,)
fname = remplacer (fname, am,)
fname = remplacer (fname, matin,)
fname = remplacer (fname, après-midi,)
MakeFileName = fname
fonction finale
Si vous êtes trop paresseux pour changer, copiez simplement le code suivant:
La copie de code est la suivante:
<%
'FckEditor - L'éditeur de texte pour Internet - http://www.fckeditor.net
'Copyright (C) 2003-2009 Frederico Caldeira Knabben
'
'== commencer la licence ==
'
«Licencié selon les termes de l'une des licences suivantes à votre
' choix:
'
'- GNU General Public License version 2 ou version ultérieure (le GPL)
'http://www.gnu.org/licenses/gpl.html
'
'- GNU Leser General Public License version 2.1 ou version ultérieure (le LGPL)
'http://www.gnu.org/licenses/lgpl.html
'
'- Mozilla Public License version 1.1 ou version ultérieure (le MPL)
'http://www.mozilla.org/mp/mpl-1.1.html
'
'== Fin de licence ==
'
«Ce fichier comprend des fonctions spécifiques IO utilisées par le connecteur ASP.
%>
<%
Fonction combinés (sbasepath, sfolder)
sfolder = remplacer (sfolder, /, /)
Combinepaths = retirefromend (sbasepath, /) & / & retirefromstart (sfolder, /)
fonction finale
fonction combinélocalpaths (sbasepath, sfolder)
sfolder = remplacer (sfolder, /, /)
«Les fonctions supprimées * utilisent Regexp, nous devons donc échapper au /
CombinélocalPaths = retirefromend (sbasepath, //) & / & retirefromstart (sfolder, //)
fonction finale
Fonction getResourceTypePath (ResourceType, scommand)
if (scommand = Quickupload) alors
GetResourceTypePath = configQuckuploadPath.item (ResourceType)
autre
GetResourceTypePath = configFileTypeSpath.item (ResourceType)
terminer si
fonction finale
Fonction getResourceTypeDirectory (ResourceType, scommand)
if (scommand = Quickupload) alors
if (configQuckuploadAbsolutepath.item (ResourceType) <>) puis
GetResourCetyPeDirectory = configQuckuploadabsolutepath.item (ResourceType)
autre
«Carte le chemin du répertoire local.
GetResourceTypeDirectory = server.mappath (configQuckuploadPath.item (ResourceType))
terminer si
autre
if (configFileTypesAbsolutepath.item (ResourceType) <>) puis
GetResourCetyPeDirectory = configFileTypesAbsolutepath.item (ResourceType)
autre
«Carte le chemin du répertoire local.
GetResourCetyPeDirectory = Server.Mappath (configFileTyPath.Item (ResourceType))
terminer si
terminer si
fonction finale
Fonction getUrlFrompath (ResourceType, FolderPath, Scommand)
GetUrlFrompath = combinepaths (getResourceTypePath (ResourceType, Scommand), FolderPath)
Fonction finale
Fonction SupporExtension (nom de fichier)
RetireExtension = Left (nom de fichier, instruc (nom de fichier,.) - 1)
Fonction finale
Fonction ServerMapFolder (ResourceType, FolderPath, Scommand)
Dim SresourceTypePath
«Obtenez le répertoire des types de ressources.
sresourceTypePath = getResourceTypeDirectory (ResourceType, scommand)
«Assurez-vous que le répertoire existe.
CréerServerfolder SresourceTypePath
«Renvoie le répertoire de type de ressources combiné avec le chemin requis.
Servermapfolder = combinelocalpaths (sresourcetypepath, folderpath)
Fonction finale
Sub CreateServerfolder (FolderPath)
Dim
Set ofso = server.createObject (scripting.fileSystemObject)
Sombre
Sparent = OFSO.getParentFolderName (FolderPath)
«Si FolderPath est un chemin de réseau (// serveur / dossier /), alors Sparent est une chaîne vide.
' Sortir.
if (sparent =) puis quitter le sous
«Vérifiez si le parent existe ou créez-le.
If (pas ofo.folderexists (Sparent)) alors crée unserverfolder (sparent)
If (ogeso.folderexists (folderpath) = false) alors
Sur l'erreur reprendre ensuite
OFSO.CREATEFOLDER (FOLDERPATH)
Si err.number <> 0 alors
sombre de serrorn
Dim ierrnumber, serrdescription
ierrnumber = err.number
serrDescription = err.description
Sur l'erreur Goto 0
Sélectionner le cas ierrnumber
Cas 52
serrorNumber = 102 'Nom du dossier non valide.
Cas 70
SERRORNUNMER = 103 'Erreur de sécurité.
Cas 76
serrornumber = 102 'chemin trop long.
Cas d'autre
serrornumber = 110
Fin de sélection
Sendror serrornunumber, CreateServerfolder (& Folderpath &): & SerrDescription
terminer si
Terminer si
Set Ofo = rien
Sub-Sub
Fonction Isallowedext (extension, ResourceType)
Minerai
Définir le minerai = nouveau regexp
ore.ignorecase = true
minerai.global = true
Dim Sallowed, Sdened
sallowed = configallowedextensions.item (ResourceType)
sdened = configDeniedExtensions.Item (ResourceType)
Isallowedext = true
Si shened <> alors
minerai
Isallowedext = pas ore.test (extension)
Terminer si
Si Isallowedext et Sallowed <> alors
Ore.Pattern = Sallowed
Isallowedext = ore.test (extension)
Terminer si
Définir le minerai = rien
Fonction finale
Fonction isallowedType (ResourceType)
Minerai
Définir le minerai = nouveau regexp
ore.ignorecase = false
minerai.global = true
Ore.Pattern = ^ (& ConfigallowEdTypes &) $
IsallowedType = Ore.Test (ResourceType)
Définir le minerai = rien
Fonction finale
Fonction IsallowedCommand (Scommand)
Minerai
Définir le minerai = nouveau regexp
ore.ignorecase = true
minerai.global = true
Ore.Pattern = ^ (& ConfigallowedCommands &) $
IsallowedCommand = Ore.Test (Scommand)
Définir le minerai = rien
Fonction finale
fonction getCurrentFolder ()
sombres sombres
minége
ScurrentFolder = request.Querystring (CurrentFolder)
If (ScurrentFolder =) puis ScurrentFolder = /
«Vérifiez la syntaxe du dossier actuel (doit commencer et commencer par une barre oblique).
Si (à droite (ScurrentFolder, 1) <> /) alors ScurrentFolder = ScurrentFolder & /
If (à gauche (ScurrentFolder, 1) <> /) alors ScurrentFolder = / & ScurrentFolder
'Vérifiez les chemins de dossier non valides (..)
If (instr (1, ScurrentFolder, ..) <> 0 ou instr (1, ScurrentFolder, /) <> 0) puis
Sendror 102,
Terminer si
Définir Oregex = New Regexp
oregex.global = true
Oregex.Pattern = (//.)|(//)|(@//:/*/?///</>/| VORDATEM
si (oregex.test (ScurrentFolder)) alors
Sendror 102,
Terminer si
GetCurrentFolder = ScurrentFolder
fonction finale
'Faites un nettoyage du nom du dossier pour éviter les problèmes possibles
fonction SensizefolderName (snewfoldername)
Minége
Définir Oregex = New Regexp
oregex.global = true
«supprimer.
oregex.pattern = (/.|//|//w//|:|/?|/*||/<|//////>|@/u0000-/u001f
SaventizeFolderName = Oregex.replace (snewfoldername, _)
Définir Oregex = Rien
fonction finale
«Faites un nettoyage du nom du fichier pour éviter les problèmes possibles
fonction SensizeFileName (snewFilename)
Minége
Sombre
Définir Oregex = New Regexp
oregex.global = true
if (configForcesHatleExtension = true) alors
oregex.pattern = /.(?!*^.
snewFileName = oregex.replace (snewFileName, _)
'Obtenez l'extension du fichier
snewFileName = MakeFileName (maintenant ()) &. & GetExtend (snewFileName)
terminer si
'supprimer / / |
oregex.pattern = (// | // | / |: | /? | / * || / <| /////> | [/ u0000- / u001f] | / u007f)
SavenzeFileName = Oregex.replace (SnewFileName, _)
Définir Oregex = Rien
fonction finale
Fonction getExtend (nom de fichier)
TMP DIM
Si le nom de fichier <> alors
tmp = mid (nom de fichier, instruc (nom de fichier,.) + 1, len (nom de fichier) -intrrev (nom de fichier ,.)))
TMP = LCase (TMP)
Si instr (1, tmp, asp)> 0 ou instr (1, tmp, php)> 0 ou instlin (1, tmp, php3)> 0 ou instlin (1, tmp, aspx)> 0 puis
getExtend = txt
autre
getExtend = TMP
terminer si
autre
getExtend =
terminer si
Fonction finale
fonction makeFileName (fname)
FNAME = FNAME 'Le premier FNAME est une variable, et ce dernier FNAME est une référence de paramètre de fonction
fname = remplacer (fname, -,)
fname = remplacer (fname ,,)
fname = remplacer (fname ,:,)
fname = remplacer (fname, pm,)
fname = remplacer (fname, am,)
fname = remplacer (fname, matin,)
fname = remplacer (fname, après-midi,)
MakeFileName = fname
fonction finale
«C'est la fonction qui envoie les résultats du processus de téléchargement.
Sub SentuploadResults (errorNumber, fileurl, nom de fichier, custommsg)
Réponse.
Réponse.write <script type = text / javascript>
«Version mini-midi du Script Document.Domain Automatic Fix (# 1919).
'Le script d'origine se trouve sur _dev / domain_fix_template.js
Réponse.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;}}}) () ;
Réponse.write window.parent.onuploadCompleted (& errorNumber &, & remplacer (fileurl ,, /) &, & remplacer (nom de fichier ,, /) &, & remplacer (custommsg ,, /) &);
Réponse.write </cript>
Réponse.
Sub-Sub
%>