최근에 Fckeditor를 공부해야하며 ASP 버전입니다. 업로드 후 파일의 이름을 바꾸는 것은 매우 우울합니다. 다음은 내 수정 프로세스를 기록하고 일부 기능은 네트워크에서 나옵니다. 위치 : 편집기/filemanager/커넥터/ASP/IO.asp
주요 목적은 기능을 수정하는 것입니다 : SanitizeFilename은 확장자 및 파일 이름을 얻는 방법을 추가합니다.
코드 사본은 다음과 같습니다.
'가능한 문제를 피하기 위해 파일 이름을 정리하십시오.
기능 SanitizeFilename (snewfilename)
희미한 오리 게 X
희미한 oext
set oregex = new Regexp
oregex.global = true
if (configforcesingleextension = true) 그러면
oregex.pattern = /. (? !?! ]**)
snewfilename = oregex.replace (snewfilename, _)
'파일 확장자를 얻으십시오
snewfilename = makefilename (now ()). & getextend (snewfilename)
끝 If
'제거 / / |. * <>
oregex.pattern = (// | // |/| : |/? |/*|/*||/<| ////> | [/u0000-/u001f] |/u007f)
SanitizeFilename = Oregex.replace (SnewFilename, _)
Set Oregex = Nothing
엔드 기능
기능 getextend (filename)
희미한 TMP
Filename <>라면
tmp = mid (filename, instrev (filename,.)+1, len (filename) -instrev (filename,.))
TMP = LCASE (TMP)
인스트르 (1, TMP, ASP)> 0 또는 인스트르 (1, TMP, PHP)> 0 또는 인스트르 (1, TMP, PHP3)> 0 또는 인스트르 (1, TMP, ASPX)> 0 인 경우
getextend = txt
또 다른
getextend = tmp
끝 If
또 다른
getextend =
끝 If
엔드 기능
함수 makefilename (fname)
fname = fname '첫 번째 fname은 변수이고 후자의 fname은 함수 매개 변수 참조입니다.
fname = 교체 (fname,-,)
fname = 교체 (fname ,,)
fname = 교체 (fname, :,)
fname = 교체 (fname, pm,)
fname = 교체 (fname, am,)
fname = 교체 (fname, morning,)
fname = 교체 (fname, 오후,)
makefilename = fname
엔드 기능
변경하기에는 너무 게으른 경우 다음 코드를 복사합니다.
코드 사본은 다음과 같습니다.
<%
'fckeditor- 인터넷의 텍스트 편집기 -http://www.fckeditor.net
'저작권 (C) 2003-2009 Frederico Caldeira Knabben
'
'== 라이센스 시작 ==
'
'다음 라이센스의 조건에 따라 라이센스
' 선택:
'
'-GNU 일반 공개 라이센스 버전 2 이상 (GPL)
'http://www.gnu.org/licenses/gpl.html
'
'-GNU가 적은 일반 공개 라이센스 버전 2.1 이상 (LGPL)
'http://www.gnu.org/licenses/lgpl.html
'
' - 모질라 공개 라이센스 버전 1.1 이상 (MPL)
'http://www.mozilla.org/mpl/mpl-1.1.html
'
'== 종료 라이센스 ==
'
'이 파일에는 ASP 커넥터가 사용하는 IO 특정 기능이 포함되어 있습니다.
%>
<%
기능 콤바인 패스 (sbasepath, sfolder)
sfolder = 교체 (sfolder, /, /)
CombinePaths = removeFromend (sbasepath, /) & / & removeFromStart (sfolder, /)
엔드 기능
기능 combinelocalpaths (sbasepath, sfolder)
sfolder = 교체 (sfolder, /, /)
'REMINGFROM* 함수는 regexp를 사용하므로 /를 피해야합니다.
combinelocalpaths = removefromend (sbasepath, //) & / & removefromstart (sfolder, //)
엔드 기능
함수 getResourcetyPepath (ResourceType, Scommand)
if (scommand = QuickUpload) 그러면
getResourcetyPepath = configquickUploadPath.Item (resourceType)
또 다른
getResourcetyPepath = configFileTyPespath.Item (resourceType)
끝 If
엔드 기능
함수 getResourcetyPedirectory (ResourceType, Scommand)
if (scommand = QuickUpload) 그러면
if (configquickuploadabsolutepath.item (resourcetype) <>)
getResourcetyPedirectory = configquickuploadabsolutepath.item (ResourceType)
또 다른
'userfiles 경로를 로컬 디렉토리로 매핑하십시오.
getResourcetyPedirectory = server.mappath (configquickUploadPath.Item (resourceType))
끝 If
또 다른
if (configfiletypesabsolutepath.item (resourcetype) <>)
getResourcetyPedirectory = configfiletypesabsolutepath.item (resourcetype)
또 다른
'userfiles 경로를 로컬 디렉토리로 매핑하십시오.
getResourcetyPedirectory = server.mappath (configFileTyPespath.Item (resourceType))
끝 If
끝 If
엔드 기능
기능 geturlfrompath (ResourceType, FolderPath, Scommand)
geturlfrompath = combinePaths (getResourcetyPepath (resourceType, scommand), 폴더 스팟)
엔드 기능
함수 removeextension (filename)
removeExtension = LEFT (Filename, Instrev (Filename,.) -1)
엔드 기능
기능 ServerMapFolder (ResourceType, FolderPath, Scommand)
희미한 sresourcetypepath
'리소스 유형 디렉토리를 얻으십시오.
sresourcetypepath = getResourcetyPedirectory (ResourceType, Scommand)
'디렉토리가 존재하는지 확인하십시오.
Createserverfolder SresourcetyPepath
'필요한 경로와 결합 된 리소스 유형 디렉토리를 반환하십시오.
ServerMapFolder = CombinElocalPaths (sresourcetyPepath, 폴더 스팟)
엔드 기능
Sub Createserverfolder (FolderPath)
희미한
set ofso = server.createobject (scripting.filesystemobject)
희미한
sparent = ofso.getParentFolderName (FolderPath)
'FolderPath가 네트워크 경로 (// 서버/폴더/) 인 경우 Sparent는 빈 문자열입니다.
' 나가세요.
if (sparent =) 그런 다음 서브를 종료하십시오
'부모가 존재하는지 확인하거나 만들 수 있습니다.
if (ofso.folerexists (sparent)) 그런 다음 CreateServerfolder (Sparent)
if (ofso.dolerexists (folderPath) = false)
다음에 오류가 재개됩니다
ofso.createfolder (FolderPath)
err.number <> 0 인 경우
Dim Serrornumber
희미한 ierrnumber, serrdescription
ierrnumber = err.number
serrdescription = err.description
오류 goto 0
사례 ierrnumber를 선택하십시오
사례 52
serrornumber = 102 '잘못된 폴더 이름.
사례 70
SerrorNumber = 103 '보안 오류.
사례 76
Serrornumber = 102 '경로가 너무 길다.
다른 경우
Serrornumber = 110
종료 선택
Senderror Serrornumber, Createserverfolder (& FolderPath &) : & serrdescription
끝 If
끝 If
SET OFSO = 아무것도
종료 서브
함수 isallowedext (확장, 자원 유형)
희미한 광석
세트 광석 = 새로운 regexp
ore.ignorecase = true
ore.global = true
희미하게 깎아 내리고, 삐걱 거리는
sallowed = configallowedextensions.Item (resourceType)
sdenied = configdeniedextensions.item (resourceType)
isallowedext = true
그렇다면 <>라면
ore.pattern = sdenied
isallowedext = ore.test (확장)
끝 If
iSallowedext와 Sallowed <>라면
ore.pattern = sallowed
isallowedext = ore.test (확장)
끝 If
설정 광석 = 아무것도 없습니다
엔드 기능
함수 isallowedType (ResourceType)
희미한 광석
세트 광석 = 새로운 regexp
ore.ignorecase = false
ore.global = true
ore.pattern = ^(& configallowedTypes &) $
isallowedType = ore.test (ResourceType)
설정 광석 = 아무것도 없습니다
엔드 기능
기능 isallowedCommand (Scommand)
희미한 광석
세트 광석 = 새로운 regexp
ore.ignorecase = true
ore.global = true
ore.pattern = ^(& configallowedCommands &) $
isallowedCommand = ore.test (Scommand)
설정 광석 = 아무것도 없습니다
엔드 기능
기능 getCurrentFolder ()
Dim Scurrentfolder
희미한 오리 게 X
scurrentfolder = request.querystring (currentfolder)
if (scurrentfolder =) 그런 다음 scurrentfolder = /
'현재 폴더 구문을 확인하십시오 (슬래시로 시작하고 시작해야합니다).
if (오른쪽 (Scurrentfolder, 1) <> /) 그런 다음 Scurrentfolder = Scurrentfolder & /
if (왼쪽 (scurrentfolder, 1) <> /) 그런 다음 scurrentfolder = / & scurrentfolder
'잘못된 폴더 경로 확인 (..)
if (instr (1, scurrentfolder, ..) <> 0 또는 Instr (1, Scurrentfolder, /) <> 0) 그런 다음
SendError 102,
끝 If
set oregex = new Regexp
oregex.global = true
oregex.pattern = (//.)|(//)| (// )|(=//:/*/ ////</>/,] vant
if (oregex.test (scurrentfolder))
SendError 102,
끝 If
getCurrentFolder = ScurrentFolder
엔드 기능
'가능한 문제를 피하기 위해 폴더 이름을 정리하십시오.
기능 SanitizefolderName (SnewfolderName)
희미한 오리 게 X
set oregex = new Regexp
oregex.global = true
'제거. / / |
oregex.pattern = (/.|// ,/ ,/|/|:|/ ?/?|/*|/ <|/////>|*//u0000-/u001f])
SanitizefolderName = Oregex.replace (SnewfolderName, _)
Set Oregex = Nothing
엔드 기능
'가능한 문제를 피하기 위해 파일 이름을 정리하십시오.
기능 SanitizeFilename (snewfilename)
희미한 오리 게 X
희미한 oext
set oregex = new Regexp
oregex.global = true
if (configforcesingleextension = true) 그러면
oregex.pattern = /. (? !?! ]**)
snewfilename = oregex.replace (snewfilename, _)
'파일 확장자를 얻으십시오
snewfilename = makefilename (now ()) &. & getextend (snewfilename)
끝 If
'제거 / / |. * <>
oregex.pattern = (// | // |/| : |/? |/*|/*||/<| ////> | [/u0000-/u001f] |/u007f)
SanitizeFilename = Oregex.replace (SnewFilename, _)
Set Oregex = Nothing
엔드 기능
기능 getextend (filename)
희미한 TMP
Filename <>라면
tmp = mid (filename, instrev (filename,.)+1, len (filename) -instrev (filename,.))
TMP = LCASE (TMP)
인스트르 (1, TMP, ASP)> 0 또는 인스트르 (1, TMP, PHP)> 0 또는 인스트르 (1, TMP, PHP3)> 0 또는 인스트르 (1, TMP, ASPX)> 0 인 경우
getextend = txt
또 다른
getextend = tmp
끝 If
또 다른
getextend =
끝 If
엔드 기능
함수 makefilename (fname)
fname = fname '첫 번째 fname은 변수이고 후자의 fname은 함수 매개 변수 참조입니다.
fname = 교체 (fname,-,)
fname = 교체 (fname ,,)
fname = 교체 (fname, :,)
fname = 교체 (fname, pm,)
fname = 교체 (fname, am,)
fname = 교체 (fname, morning,)
fname = 교체 (fname, 오후,)
makefilename = fname
엔드 기능
'이것은 업로드 프로세스의 결과를 보내는 기능입니다.
senduploadResults (Errornumber, FileUrl, filename, custommsg)
응답
response.write <script type = text/javaScript>
'문서의 미니화 된 버전 .Domain Automatic Fix 스크립트 (#1919).
'원래 스크립트는 _dev/domain_fix_template.js에서 찾을 수 있습니다
response.write (function () {var d = document.domain; whip (true) {try {var a = swooin .*? (? :/. | $)/, ''); if (d.length == 0) break; try {document.domain = d;} catch (e) {break;}}}) () ;
response.write swooin
응답 </script>
응답. 엔드
종료 서브
%>