Saya harus belajar fckeditor baru -baru ini, dan itu adalah versi ASP. Ubah nama file setelah mengunggahnya sangat menyedihkan. Berikut ini mencatat proses modifikasi saya, dan beberapa fungsi berasal dari jaringan. Diposisikan ke: Editor/FileManager/Konektor/ASP/IO.asp
Tujuan utamanya adalah untuk memodifikasi fungsi: SanitizeFileName, dan menambahkan metode untuk mendapatkan ekstensi dan penggantian nama file.
Salinan kode adalah sebagai berikut:
'Lakukan pembersihan nama file untuk menghindari kemungkinan masalah
Fungsi SanitizeFileName (SnewfileName)
Redup oregex
Redup oext
Atur oregex = regexp baru
oregex.global = true
if (configForcesinglextension = true) lalu
oreegex.pattern = /.(?!!anjang
SnewFileName = OreGex.Replace (Snewfilename, _)
'Dapatkan ekstensi file
SnewFileName = makefilename (sekarang ()). & GetExtend (SnewFileName)
akhiri jika
'Hapus / / |
oreegex.pattern = (// | // |/|: |/? |/*||/<| /////> | [/u0000-/u001f] |/u007f)
SanitizeFileName = oreegex.replace (SnewfileName, _)
Atur oreegex = tidak ada
fungsi akhir
Fungsi getextend (nama file)
redup tmp
Jika nama file <> maka
tmp = mid (nama file, instrrev (fileName ,.)+1, len (nama file) -instrrev (nama file,.)))
TMP = LCAS (TMP)
Jika instr (1, tmp, asp)> 0 atau instr (1, tmp, php)> 0 atau instr (1, tmp, php3)> 0 atau instr (1, tmp, aspx)> 0 lalu
getextend = txt
kalau tidak
getextend = tmp
akhiri jika
kalau tidak
getextend =
akhiri jika
Fungsi akhir
fungsi makeFilename (fname)
fname = fname 'fname pertama adalah variabel, dan fname yang terakhir adalah referensi parameter fungsi
fname = ganti (fname,-,)
fname = ganti (fname,,)
fname = ganti (fname ,:,)
fname = ganti (fname, pm,)
fname = ganti (fname, am,)
fname = ganti (fname, pagi,)
fname = ganti (fname, sore,)
makeFilename = fname
fungsi akhir
Jika Anda terlalu malas untuk berubah, cukup salin kode berikut:
Salinan kode adalah sebagai berikut:
<%
'FckEditor - Editor Teks untuk Internet - http://www.fckeditor.net
'Hak Cipta (C) 2003-2009 Frederico Caldeira Knabben
'
'== Lisensi Mulai ==
'
'Melisensikan berdasarkan ketentuan lisensi berikut di Anda
' pilihan:
'
' - GNU Umum Lisensi Publik Versi 2 atau lebih baru (GPL)
'http://www.gnu.org/licenses/gpl.html
'
' - GNU Lesser Umum Lisensi Publik Versi 2.1 atau lebih baru (LGPL)
'http://www.gnu.org/licenses/lgpl.html
'
' - Lisensi Publik Mozilla versi 1.1 atau lebih baru (MPL)
'http://www.mozilla.org/mpl/mpl-1.1.html
'
'== end lisensi ==
'
'File ini mencakup fungsi spesifik IO yang digunakan oleh konektor ASP.
%>
<%
Fungsi CombinePaths (SBASEPATH, SFOLFOLDER)
sfolder = ganti (sfolder, /, /)
CombinePaths = RemestFromend (SBASePath, /) & / & RemestFromStart (SFOLDER, /)
fungsi akhir
Fungsi Combinelocalpaths (SBASEPATH, SFOLDER)
sfolder = ganti (sfolder, /, /)
'Fungsi lepas dari* menggunakan RegExp, jadi kita harus lepas dari /
CombinelocalPaths = RemestFromend (SBASePath, //) & / & RemoveFromStart (SFolder, //)
fungsi akhir
Fungsi getResourCetypePath (ResourCetype, Scommand)
if (scommand = quickupload) lalu
GetResourCetypePath = configQuickuploadpath.item (ResourCetype)
kalau tidak
GetResourCetypePath = configFileTypespath.item (ResourCetype)
akhiri jika
fungsi akhir
Fungsi getResourCetypeDirectory (Resourcetype, Scommand)
if (scommand = quickupload) lalu
if (configQuickuploadabsolutePath.item (resourcetype) <>) lalu
GetResourCetypeDirectory = configQuickuploadabsolutePath.item (resourcetype)
kalau tidak
'Peta jalur UserFiles ke direktori lokal.
GetResourCetypeDirectory = server.mappath (configQuickUploadPath.item (ResourCetype))
akhiri jika
kalau tidak
if (configFileTypeSabsolutePath.item (resourcetype) <>) kemudian
GetResourCetypeDirectory = configFileTypesAbsolutePath.item (resourcetype)
kalau tidak
'Peta jalur UserFiles ke direktori lokal.
GetResourCetypeDirectory = server.mappath (configFiletypespath.item (resourcetype))
akhiri jika
akhiri jika
fungsi akhir
Fungsi getUrlFompath (ResourCetype, FolderPath, Scommand)
GetUrlfrompath = CombinePaths (getResourCetypePath (ResourCetype, Scommand), FolderPath)
Fungsi akhir
Fungsi RemoveExtension (nama file)
RemoveExtension = kiri (nama file, instrrev (nama file ,.) - 1)
Fungsi akhir
Fungsi servermapfolder (resourcetype, folderpath, scommand)
Redup sresourcetypepath
'Dapatkan direktori tipe sumber daya.
sResourCetypePath = getResourCetypeDirectory (Resourcetype, Scommand)
'Pastikan direktori ada.
CreateServerFolder sresourcetypath
'Mengembalikan direktori tipe sumber daya yang dikombinasikan dengan jalur yang diperlukan.
Servermapfolder = combinelocalpaths (sResourCetyPepath, folderpath)
Fungsi akhir
Sub CreateServerFolder (FolderPath)
Redup
SET OFSO = Server.CreateObject (Scripting.FilesystemObject)
Redup redup
sparent = ofso.getParentFoldername (folderPath)
'Jika FolderPath adalah jalur jaringan (// server/folder/) maka Sparent adalah string kosong.
'Keluar.
if (sparent =) lalu keluar sub sub
'Periksa apakah orang tua ada, atau buat.
If (not ofso.folderexists (sparent)) kemudian createServerFolder (sparent)
If (ofso.folderexists (folderpath) = false) kemudian
Pada kesalahan resume berikutnya
Ofso.createFolder (FolderPath)
Jika err.number <> 0 lalu
Redup Serrornumber
Redup ierrnumber, serrdescription
ierrnumber = err.number
Serrdescription = err.description
Pada kesalahan goto 0
Pilih case ierrnumber
Kasus 52
Serrornumber = 102 'Nama folder tidak valid.
Kasus 70
Serrornumber = 103 'Kesalahan Keamanan.
Kasus 76
Serrornumber = 102 'Path terlalu lama.
Kasus lain
Serrornumber = 110
Akhiri Pilih
Senderror Serrornumber, CreateServerFolder (& FolderPath &): & Serrdescription
akhiri jika
Akhiri jika
Set ofso = tidak ada
Akhir sub
Fungsi ISAlLowEdext (Extension, ResourCetype)
Ore redup
Set Ore = RegExp baru
Ore.ignorecase = true
Ore.global = true
Redup, sdenied
Sallowed = configAllowedExtensions.Item (ResourCetype)
sdenied = configDenIdExtensions.Item (ResourCetype)
Isallowedext = true
Jika sdenied <> maka
Ore.pattern = sdenied
Isallowedext = not ore.test (ekstensi)
Akhiri jika
Jika ISAllowedext dan Sallowed <> lalu
Ore.pattern = Sallowed
Isallowedext = ore.test (ekstensi)
Akhiri jika
Setel Ore = Tidak Ada
Fungsi akhir
Fungsi ISAllowedType (ResourCetype)
Ore redup
Set Ore = RegExp baru
Ore.ignorecase = false
Ore.global = true
Ore.pattern = ^(& configAllowedTypes &) $
IsallowedType = ore.test (resourcetype)
Setel Ore = Tidak Ada
Fungsi akhir
Fungsi ISAllowedCommand (Scommand)
Ore redup
Set Ore = RegExp baru
Ore.ignorecase = true
Ore.global = true
Ore.pattern = ^(& configAllowedCommands &) $ $
IsallowedCommand = Ore.test (Scommand)
Setel Ore = Tidak Ada
Fungsi akhir
fungsi getCurrentFolder ()
redup scurrentfolder
redup oregex
scurrentfolder = request.queryString (currentFolder)
If (scurrentfolder =) kemudian scurrentfolder = /
'Periksa sintaks folder saat ini (harus mulai dan mulai dengan tebasan).
If (kanan (scurrentfolder, 1) <> /) lalu scurrentFolder = scurrentFolder & /
If (left (scurrentfolder, 1) <> /) lalu scurrentfolder = / & scurrentFolder
'Periksa jalur folder yang tidak valid (..)
If (instr (1, scurrentfolder, ..) <> 0 atau instr (1, scurrentfolder, /) <> 0) lalu
Senderror 102,
Akhiri jika
Atur oregex = regexp baru
oregex.global = true
oregex.pattern = (//.)|(//)|(ace///:/*/?////</>/|anjang| media 0/u0000-/u001f media */u007f)
if (oreegex.test (scurrentfolder)) lalu
Senderror 102,
Akhiri jika
GetCurrentFolder = ScurrentFolder
fungsi akhir
'Lakukan pembersihan nama folder untuk menghindari kemungkinan masalah
Fungsi SanitizeFolderName (SnewFoldername)
Redup oregex
Atur oregex = regexp baru
oregex.global = true
'Hapus. / / |
oregex.pattern = (/.|//|//|/| :|/?|/*||/<|/////>| media/u0000-/u001f media|/u007f)
SanitizefolderName = oreegex.replace (SnewFoldername, _)
Atur oreegex = tidak ada
fungsi akhir
'Lakukan pembersihan nama file untuk menghindari kemungkinan masalah
Fungsi SanitizeFileName (SnewfileName)
Redup oregex
Redup oext
Atur oregex = regexp baru
oregex.global = true
if (configForcesinglextension = true) lalu
oreegex.pattern = /.(?!!anjang
SnewFileName = OreGex.Replace (Snewfilename, _)
'Dapatkan ekstensi file
SnewFileName = makefilename (sekarang ()) &. & GetExtend (SnewFileName)
akhiri jika
'Hapus / / |
oreegex.pattern = (// | // |/|: |/? |/*||/<| /////> | [/u0000-/u001f] |/u007f)
SanitizeFileName = oreegex.replace (SnewfileName, _)
Atur oreegex = tidak ada
fungsi akhir
Fungsi getextend (nama file)
redup tmp
Jika nama file <> maka
tmp = mid (nama file, instrrev (fileName ,.)+1, len (nama file) -instrrev (nama file,.)))
TMP = LCAS (TMP)
Jika instr (1, tmp, asp)> 0 atau instr (1, tmp, php)> 0 atau instr (1, tmp, php3)> 0 atau instr (1, tmp, aspx)> 0 lalu
getextend = txt
kalau tidak
getextend = tmp
akhiri jika
kalau tidak
getextend =
akhiri jika
Fungsi akhir
fungsi makeFilename (fname)
fname = fname 'fname pertama adalah variabel, dan fname yang terakhir adalah referensi parameter fungsi
fname = ganti (fname,-,)
fname = ganti (fname,,)
fname = ganti (fname ,:,)
fname = ganti (fname, pm,)
fname = ganti (fname, am,)
fname = ganti (fname, pagi,)
fname = ganti (fname, sore,)
makeFilename = fname
fungsi akhir
'Ini adalah fungsi yang mengirimkan hasil dari proses pengunggahan.
Sub SendUploadResults (errornumber, fileurl, nama file, custommsg)
Respons.clear
Response.write <script type = text/javascript>
'Versi minif Document.Domain Automatic Fix Script (#1919).
'Script asli dapat ditemukan di _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 &, & ganti (fileurl ,, /) &, & ganti (nama file ,, /) &, & ganti (custommsg ,, /) &);
Response.write </script>
Respons.end
Akhir sub
%>