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 "<link rel= tipo de folha de estilo= text/css href= ?page=css >"
- Response.Write "<Script Language= JavaScript >alert( Empacotamento de pasta concluído!nA seguir está uma lista de arquivos que não foram empacotados: );</Script>"
- Response.Write "<body>" &Replace(FailFilelist, "|" , "<br>" ) "</body>"
- 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 "<link rel= tipo de folha de estilo= text/css href= ?page=css >"
- Response.Write "<Script Language= JavaScript >alert(Empacotamento da pasta concluído!nA seguir está uma lista de arquivos que não foram empacotados, verifique);</Script>"
- Response.Write "<body>" &Replace(FailFilelist, "|" , "<br>" ) "</body>"
- 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