Crear un ZIP desde ASP clásico sin componentes
Código ASP clásico
- Por Programador ASP clásico /
- 16/01/2022 @ 10:48:04 /
- 1298 visitas
Hoy te presentamos una función creada en ASP Clásico que permite a los usuarios crear archivos ZIP sin depender de componentes DLL de terceros. Esta función es ideal para aquellos que buscan una solución de compresión en un entorno de hosting compartido.
Una de las principales ventajas de esta función es que no requiere la instalación de ningún componente de terceros, lo que significa que no hay necesidad de preocuparse por la compatibilidad de versiones o posibles conflictos con otros componentes instalados. Además, esto ayuda a mantener una mayor estabilidad y seguridad en el servidor, ya que no se depende de software externo que pueda ser vulnerado o comprometido.
Otra ventaja de utilizar esta función es que el proceso de creación de archivos ZIP se realiza directamente en el servidor web, lo que significa que no es necesario enviar grandes cantidades de datos a través de la red para comprimirlos. Esto puede ahorrar tiempo y ancho de banda, especialmente en conexiones lentas o limitadas.
Como usar la clase para crear un ZIP desde ASP clásico
<%
option explicit
Server.scriptTimeout = 1
%>
<%
dim zip, filepath
filepath = "test.zip"
set zip = new aspZip
zip.OpenArquieve(filepath)
zip.Add("..\src")
zip.Add(".\default.asp")
zip.CloseArquieve()
zip.ExtractTo(".\test")
set zip = nothing
%>
Código de la clase para crear un ZIP desde ASP clásico
Este código debes incluirlo en la cabecera de cada archivo que desees agregar la función:
<%
' Classic ASP CSV creator 0.3
' By RCDMK <rcdmk@rcdmk.com>
'
' The MIT License (MIT) - http://opensource.org/licenses/MIT
' Copyright (c) 2012 RCDMK <rcdmk@rcdmk.com>
'
' Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
' associated documentation files (the "Software"), to deal in the Software without restriction,
' including without limitation the rights to use, copy, modify, merge, publish, distribute,
' sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
' furnished to do so, subject to the following conditions:
'
' The above copyright notice and this permission notice shall be included in all copies or substantial
' portions of the Software.
'
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
' NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
' NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
' DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
' OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
class aspZip
dim BlankZip, NoInterfaceYesToAll
dim fso, curArquieve, created, saved
dim files, m_path, zipApp, zipFile
public property get Count()
Count = files.Count
end property
public property get Path
Path = m_path
end property
private sub class_initialize()
BlankZip = Chr(80) & Chr(75) & Chr(5) & Chr(6) & String(18, 0) ' Create the blank file structure
NoInterfaceYesToAll = 4 or 16 or 1024 ' http://msdn.microsoft.com/en-us/library/windows/desktop/bb787866(v=vs.85).aspx
' initialize components
set fso = createObject("scripting.filesystemobject")
set files = createObject("Scripting.Dictionary")
Set zipApp = CreateObject("Shell.Application")
end sub
private sub class_terminate()
' some cleanup
set curArquieve = nothing
set zipApp = nothing
set files = nothing
' If we created the file but did not saved it, delete it
' since its empty
if created and not saved then
on error resume next
fso.deleteFile m_path
on error goto 0
end if
set fso = nothing
end sub
' Opens or creates the arquieve
public sub OpenArquieve(byval path)
dim file
' Make sure the path is complete and in a correct format
path = replace(path, "/", "\")
m_path = Server.MapPath(path)
' Create an empty file if it already doesn't exists
if not fso.fileexists(m_path) then
set file = fso.createTextFile(m_path)
file.write BlankZip
file.close()
set file = nothing
set curArquieve = zipApp.NameSpace(m_path)
created = true
else
' Open the existing file and load its contents
dim cnt
set curArquieve = zipApp.NameSpace(m_path)
cnt = 0
for each file in curArquieve.Items
cnt = cnt + 1
files.add file.path, cnt
next
end if
saved = false
end sub
' Add a file or folder to the list
public sub Add(byval path)
path = replace(path, "/", "\")
if instr(path, ":") = 0 then path = Server.mappath(path)
if not fso.fileExists(path) and not fso.folderExists(path) then
err.raise 1, "File not exists", "The input file name doen't correspond to an existing file"
elseif not files.exists(path) Then
files.add path, files.Count + 1
end if
end sub
' Remove a file or folder from the to be added list (currently it only works for new files)
public sub Remove(byval path)
if files.exists(path) then files.Remove(path)
end sub
' Clear the to be added list
public sub RemoveAll()
files.RemoveAll()
end sub
' Writes the to the arquieve
public sub CloseArquieve()
dim filepath, file, initTime, fileCount
dim cnt
cnt = 0
For Each filepath In files.keys
' do not try add the contents that are already in the arquieve
if instr(filepath, m_path) = 0 then
curArquieve.Copyhere filepath, NoInterfaceYesToAll
fileCount = curArquieve.items.Count
'Keep script waiting until Compressing is done
On Error Resume Next
'Do Until fileCount < curArquieve.Items.Count
wscript.sleep(10)
cn = cnt + 1
'Loop
On Error GoTo 0
end if
next
saved = true
end sub
public sub ExtractTo(byval path)
if typeName(curArquieve) = "Folder3" Then
path = Server.MapPath(path)
if not fso.folderExists(path) then
fso.createFolder(path)
end if
zipApp.NameSpace(path).CopyHere curArquieve.Items, NoInterfaceYesToAll
end if
end sub
end class
%>
Código ASP clásico creado por https://github.com/rcdmk
tags: crear un zip desde asp clasico, crear un zip desde asp clasico, crear un zip desde asp classic
En esta sección encontrarás una mezcla de códigos recopilados de fuentes públicas de Internet y otros creados por ASP TEAM. Compartimos recursos útiles de buena fe para formar una base de conocimiento en el desarrollo de aplicaciones en ASP Clásico.