그날 갑자기 영감은 도난 방지 체인을 목표로했습니다.
누군가가 정상적으로 업로드 한 파일을 도난 당하면 서버의 부담이 증가합니다. 지난번에 164.cc가 매달렸다.
그런 다음 대책을 생각하십시오. 현재 도난 방지 체인 프로그램이 많이 있지만 사용하기 쉽지 않으며 무료는 아닙니다 ...
따라서 먼저 솔루션을 직접 생각할 수 있습니다. 이제 제목을보고 도난 방지 체인에 대해 생각하십시오. 아마도 단서가있을 것입니다.
업로드 된 파일이 수시로 위치한 폴더 이름을 수정할 수 있으며이 웹 사이트의 프로그램은 폴더 이름을 동적으로 얻습니다. 이러한 방식으로,이 웹 사이트에서 원래 도난당한 파일을 훔친 사이트는 경로 오류로 인해 파일을 찾지 못하므로 도난 방지 링크를 실현합니다.
그렇다면 FSO를 사용하여 폴더 이름을 수정하는 방법은 무엇입니까?
간단한 기능 :
코드 사본은 다음과 같습니다.
<%
functionfldrename (nowfld, newfld)
nowfld = server.mappath (nowfld)
newfld = server.mappath (newfld)
setfso = createobject ( "Scripting.FilesyStemObject")
ifnotfso.dolerexists (nowfld)
response.write ( "수정 해야하는 폴더 경로가 잘못되었거나 폴더 이름이 잘못 입력됩니다")
또 다른
fso.copyfoldernowfld, newfld
fso.deletefolder (nowfld)
endif
setfso = 아무것도
최종 기능 장애
%>
일반적으로 현재 폴더의 내용을 새 폴더에 복사 한 다음 폴더의 내용을 삭제하여 폴더의 이름을 바꾸는 목적을 간접적으로 달성하는 것입니다.
폴더 이름을 수정할 때, 특히 수정 될 폴더의 폴더 내용이 g 수량 일 때, 대기 시간은 이름을 원격으로 수정하는 것에 비해 대기 시간이 약간 수익성이 없기 때문에 이것은 편집증 문제입니다.
어떤 사람들은 FSO가 폴더 이름을 직접 수정할 수 있다고 말합니까? 나는 그것을하고 싶지 않다.
이 기능을 적용하십시오
<%callfldrename ( "ex01", "ex02")%>
기본 의미는 Ex02의 프로그램 실행 파일과 동일한 디렉토리에서 EX01 폴더 이름을 수정하는 것입니다.
내 지역 테스트 보고서는 다음과 같습니다.
1.이 프로그램은 프로그램 실행 시간을 소비하지 않습니다
2. 1G 폴더의 간접 이름 변경을 수행하는 데 약 50 초가 걸립니다. 이는 실제로 서버 측에서 파일 복사 및 전송 시간입니다.
3. CPU 소비가 너무 높지 않아 약 30%
4. 이름 변경의 중간에 기계가 갑자기 충돌하거나 전원이 손실되면 두 가지 상황이 발생합니다.
에이. 새 폴더가 처음 작성되었으며 (새 폴더가 구축되지 않음) 다음에 프로그램이 실행되면 오류가 발생합니다. Microsoft vbscript 런타임 오류 (0x800A003a) 파일은 이미 존재합니다. 이 시점에서 FTP 후에 새 폴더 만 삭제할 수 있습니다 (새 폴더를 삭제하기 위해 FSO를 사용하려고 시도하는 것은 효과적이지 않습니다).
비. 일부 파일이 복사되었습니다. 다음에 프로그램이 실행되면 복사 된 폴더 컨텐츠가 자동으로 덮어지고 원래 폴더 컨텐츠가 여전히 존재합니다. 원래 폴더와 파일은 복사 후에 만 삭제됩니다.
5. 동시에 기존 폴더의 이름을 복제하지 않도록 새 폴더의 이름에주의를 기울여야합니다. 물론 프로그램을 사용하여 판단 할 수도 있습니다.