Este é um navegador de arquivos FSO escrito usando objetos da coleção FSO (se você insiste em dizer que é um Trojan, não tenho objeções, funcionalmente, ele imita o design do "Top Trojan of the Ocean", mas o código é completamente reescrito). . Usando componentes como Shell.Application que podem facilmente causar morte acidental por software antivírus. Existem muitas ferramentas semelhantes na Internet. O valor de uso desta ferramenta não é muito grande, mas muitos dos códigos nela contidos são considerados bem escritos.
Os principais recursos incluem: Visualize informações do disco, navegue pelos arquivos do disco e opere de maneira semelhante ao Windows Explorer, como criar, excluir, renomear, copiar, mover e outras operações básicas de arquivo de texto.
O download de arquivos no modo de fluxo simplifica e otimiza o empacotamento/descompactação de arquivos de upload sem componentes. Uma pasta pode ser completamente empacotada/descompactada.
Trecho de código:
1. Peça de embalagem/desempacotamento de arquivo
Subpacote ( ByVal FPath, ByVal sDbPath) Servidor.ScriptTimeOut=900 Escurecer DbPath Se Certo(sDbPath,4)= ".mdb" Então CaminhoDb=sDbCaminho Outro DbPath=sDbPath ".mdb" Fim Se Se oFso.FolderExists(DbPath) Então EchoBack "Não é possível criar arquivo de banco de dados &Replace(DbPath, ""," \") Saída Sub Fim Se Se oFso.FileExists(DbPath) Então oFso.DeleteFile DbPath Fim Se Se IsFolder(FPath) então RootPath=GetParentFolder(FPath) If Right(RootPath,1)<> "" Then RootPath=RootPath&" " Outro EchoBack "Por favor, insira o caminho da pasta!" Saída Sub Fim Se Dim oCatalog,connStr,DataName Definir conn=Server.CreateObject( "ADODB.Connection" ) Definir oStream=Server.CreateObject( "ADODB.Stream" ) Definir oCatalog=Server.CreateObject( "ADOX.Catalog" ) Definir rs=Server.CreateObject( "ADODB.RecordSet" ) Sobre Erro Retomar Próximo connStr = "Provider=Microsoft.Jet.OLEDB.4.0; Fonte de dados=" & DbPath oCatalog.Create connStr Se errar então EchoBack "Não é possível criar arquivo de banco de dados &Replace(DbPath, ""," \") Saída Sub Fim Se Definir oCatalog = Nada conn.Open connStr conn.Execute( "Criar arquivos de tabela (ID int IDENTITY(0,1) PRIMARY KEY CLUSTERED, FilePath VarChar, FileData Image)" ) oStream.Open oStream.Type=1 rs.Abra "Arquivos" ,conn,3,3 DataName=Left(oFso.GetFile(DbPath).Name,InstrRev(oFso.GetFile(DbPath).Name, "." )-1) NoPackFiles=Replace(NoPackFiles, "<$datafile>" ,DataName) FailFileList = "" PackFolderFPath Se FailFilelist= "" Então EchoClose "Empacotamento de pasta bem-sucedido!" Outro Response.Write " " Response.Write "" Response.Write "" &Replace(FailFilelist, "|" , " " ) "" Fim Se oStream.Fechar rs.Fechar conexão.Fechar Fim Sub SubPacoteFolder (FolderPath) Se Não é IsFolder (FolderPath) então Saída Sub Dim oFolder,sFile,sFolder Definir oFolder=oFso.GetFolder(FolderPath) Para Cada sFile em oFolder.Files Se InStr(NoPackFiles, "|" &sFile.Name "|" )<1 Então PackFile sFile.Path Fim Se Próximo Definir sFile = Nada Para Cada sFolder em oFolder.SubFolders PackFolder sFolder.Path Próximo Definir sFolder = Nada Fim Sub SubpacoteArquivo (FilePath) Escurecer RelPath RelPath=Substituir(FilePath,RootPath, "" ) Sobre Erro Retomar Próximo Err.Limpar Err = Falso oStream.LoadFromFile FilePath rs.AdicionarNovo rs( "CaminhodoArquivo" )=RelPath rs( "DadosdoArquivo" )=oStream.Read() rs.Atualizar Se errar então FailFilelist=FailFilelist&FilePath "|" Fim Se Fim Sub Sub Desempacotar(vFolderPath,DbPath) Servidor.ScriptTimeOut=900 Dim FilePath, FolderPath, sFolderPath FolderPath=vFolderPath FolderPath=Trim(FolderPath) Se Mid(FolderPath,2,1)<> ":" Então EchoBack "O formato do caminho está incorreto e o diretório não pode ser criado!" Saída Sub Fim Se If Right(FolderPath,1)= "" Então FolderPath=Left(FolderPath,Len(FolderPath)-1) Dim connStr Definir conn=Server.CreateObject( "ADODB.Connection" ) Definir oStream=Server.CreateObject( "ADODB.Stream" ) Definir rs=Server.CreateObject( "ADODB.RecordSet" ) connStr = "Provider=Microsoft.Jet.OLEDB.4.0; Fonte de dados=" & DbPath Sobre Erro Retomar Próximo Err = Falso conn.Open connStr Se errar então EchoBack "Erro ao abrir banco de dados!" Saída Sub Fim Se Err = Falso oStream.Open oStream.Type=1 rs.Abra "Arquivos" , conexão,1,1 FailFilelist= "" Fazer Até rs.EOF Err.Limpar Err = Falso FilePath=FolderPath ""&rs(" FilePath") FilePath=Substituir(FilePath, "\"," ") sFolderPath=Left(FilePath,InStrRev(FilePath, "" )) Se Não oFso.FolderExists(sFolderPath) Então CriarPasta(sFolderPath) Fim Se oStream.SetEos() oStream.Write rs( "FileData" ) oStream.SaveToFile FilePath,2 Se errar então FailFilelist=FailFilelist&rs( "FilePath" ).Valor "|" Fim Se rs.MoveNext Laço rs.Fechar Definir rs = Nada conexão.Fechar Definir conexão = Nada Definir oStream = Nada Se FailFilelist= "" Então EchoClose "Arquivo descompactado com sucesso!" Outro Response.Write " " Response.Write "" Response.Write "" &Replace(FailFilelist, "|" , " " ) "" Fim Se Fim Sub
2. Parte de upload de arquivo (arquivo único):
Saveupload ( ByVal FolderName) Se Not IsFolder(FolderName) Then EchoClose "Nenhuma pasta de upload especificada!" Saída Sub Fim Se Dim Path,IsOverWrite Path=FolderName If Right(Path,1)<> "" Then Path=Path&" " FileName=Replace(Request( "filename" ), ""," ") If Len(FileName)<1 Then EchoBack "Selecione o arquivo e digite o nome do arquivo!" Saída Sub Fim Se Caminho=Caminho Se LCase(Request( "overwrite" ))= "true" Então IsOverWrite = Verdadeiro Caso contrário, IsOverWrite = Falso Fim Se Sobre Erro Retomar Próximo Chame MyUpload(Path,IsOverWrite) If Err Then EchoBack "Falha no upload do arquivo! (O arquivo pode já existir)" Else EchoClose "Arquivo enviado com sucesso!n" & Replace(fileName, "", " \") Fim Se terminar Sub MyUpload (FilePath,IsOverWrite) Dim oStream,tStream,FileName,sData,sSpace,sInfo,iSpaceEnd,iInfoStart,iInfoEnd,iFileStart,iFileEnd,iFileSize,RequestSize,bCrLf RequestSize=Request.TotalBytes Se RequestSize<1 então Saída Sub Definir oStream=Server.CreateObject( "ADODB.Stream" ) Definir tStream=Server.CreateObject( "ADODB.Stream" ) Com 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 Se IsOverWrite , então tStream.SaveToFile FilePath,2 Caso contrário, tStream.SaveToFile FilePath Fim Se tStream.Close .Close Fim Com SettStream = Nada Definir oStream = Nada Fim Sub