Extraer contenido ASP de ZIP en .NET
Utilice Aspose.ZIP for .NET para inspeccionar un archivo ZIP y recuperar únicamente los archivos ASP que necesita su aplicación C#. En esta página, extraer significa localizar archivos con la extensión .asp dentro del contenedor ZIP y guardarlos en un destino controlado. Aspose.ZIP restaura el archivo almacenado, pero no interpreta ni convierte su contenido interno.
La extracción selectiva resulta útil para la publicación web, la importación de sitios, el análisis de plantillas y el procesamiento de paquetes de contenido. La aplicación puede omitir entradas que no correspondan, aplicar reglas de seguridad y recursos, y entregar los archivos aprobados al siguiente servicio sin descomprimir todo el paquete.
Cómo extraer archivos ASP de ZIP con C#
Instale el
paquete Aspose.ZIP for .NET
e importe el espacio de nombres Aspose.Zip. Los metadatos del archivo comprimido están disponibles antes de escribir nada, de modo que la aplicación puede evaluar ArchiveEntry.Name, ArchiveEntry.IsDirectory y ArchiveEntry.UncompressedSize como parte de sus reglas de aceptación.
Package Manager Console Command
PM> Install-Package Aspose.Zip
Abra el ZIP con Archive, recorra Archive.Entries, seleccione las entradas cuya extensión sea .asp y llame a ArchiveEntry.Extract para cada destino aprobado. El ejemplo conserva solo el nombre final del archivo, por lo que las rutas incluidas en el ZIP no pueden salir del directorio de destino.
Pasos para extraer archivos ASP en C#
- Resuelva la ruta del ZIP de origen y cree un directorio de salida aislado.
- Abra el paquete con la clase
Archive. - Recorra
Archive.Entriesen lugar de descomprimir todas las entradas. - Seleccione los archivos cuyo nombre final utilice la extensión
.asp. - Cree una ruta de destino que permanezca dentro del directorio de salida aprobado.
- Rechace las entradas que superen el límite configurado de tamaño descomprimido.
- Guarde cada entrada aceptada con
ArchiveEntry.Extract.
Requisitos del sistema
Antes de ejecutar el ejemplo, compruebe que el entorno dispone de:
- Una versión compatible de .NET en Windows, Linux o macOS.
- Visual Studio, JetBrains Rider, Visual Studio Code u otro entorno de desarrollo para C#.
- Aspose.ZIP for .NET instalado mediante NuGet o agregado como ensamblado.
- Permisos de lectura sobre el ZIP de origen y de escritura sobre el directorio de destino.
- Límites de almacenamiento y tiempo de ejecución adecuados para entradas comprimidas no confiables.
Ejemplo en C#: seleccionar archivos ASP de un ZIP
El código abre un paquete ZIP, filtra las entradas que no son directorios por la extensión permitida y guarda los archivos coincidentes en un único directorio de salida. Al descartar las rutas archivadas se evita que segmentos de directorio superiores controlen el destino. En producción también debe definirse una regla determinista para los nombres duplicados.
Extraer archivos ASP de ZIP - C#
using Aspose.Zip;
using System;
using System.IO;
string archivePath = Path.GetFullPath("package.zip");
string outputDirectory = Path.GetFullPath("extracted-asp");
string[] allowedExtensions = { ".asp" };
const ulong MaxEntrySize = 100UL * 1024 * 1024;
Directory.CreateDirectory(outputDirectory);
using (var archive = new Archive(archivePath))
{
foreach (ArchiveEntry entry in archive.Entries)
{
if (entry.IsDirectory) continue;
string fileName = Path.GetFileName(entry.Name);
if (string.IsNullOrWhiteSpace(fileName)) continue;
string extension = Path.GetExtension(fileName);
if (!Array.Exists(
allowedExtensions,
value => string.Equals(value, extension, StringComparison.OrdinalIgnoreCase)))
{
continue;
}
if (entry.UncompressedSize > MaxEntrySize)
{
throw new InvalidDataException(
$"La entrada '{fileName}' supera el límite de extracción de 100 MB.");
}
string destinationPath = Path.Combine(outputDirectory, fileName);
entry.Extract(destinationPath);
}
}
Consideraciones de implementación para archivos ASP
Que una entrada tenga la extensión esperada solo la convierte en candidata; no demuestra que su contenido sea válido. Considere el marcado, los scripts y los recursos vinculados como contenido no confiable. Valídelos y aísle cualquier representación o ejecución posterior.
El ejemplo aplana las rutas incluidas en el ZIP. Si dos entradas aceptadas tienen el mismo nombre final, ArchiveEntry.Extract puede sobrescribir un archivo existente. Defina una política explícita: rechazar el duplicado, generar un nombre único o conservar una estructura relativa previamente validada. Use un destino independiente para cada tarea para evitar que las solicitudes simultáneas mezclen resultados.
Consideraciones de seguridad y privacidad
Trate los nombres y el contenido del archivo comprimido como datos no confiables. No añada ArchiveEntry.Name directamente a la ruta de destino: una ruta absoluta o segmentos de directorio superior podrían escribir fuera de la carpeta prevista. El ejemplo utiliza Path.GetFileName; si necesita conservar carpetas, resuelva la ruta completa y compruebe que permanezca dentro del directorio raíz aprobado.
Establezca límites para el tamaño comprimido, el tamaño descomprimido por entrada y total, el número de entradas, el tiempo de procesamiento y las tareas simultáneas. Extraiga en almacenamiento temporal con permisos restringidos, elimine resultados parciales tras un error, analice los archivos cuando sea necesario y evite registrar nombres privados o contenido extraído.
Preguntas frecuentes sobre la extracción de ASP
¿Cómo extraigo únicamente archivos ASP de un ZIP en C#?
Abra el ZIP con Archive, recorra Archive.Entries, filtre por la extensión .asp y llame a Extract para cada ruta de destino aceptada.
¿Aspose.ZIP valida el contenido del archivo ASP extraído?
No. La extensión es solo un primer filtro. El archivo recuperado debe validarse con un componente que comprenda el formato ASP.
¿Puedo aplicar el mismo patrón de selección a contenedores 7Z, RAR o TAR?
Sí, pero debe abrir cada contenedor con la clase de archivo correspondiente de Aspose.ZIP. Los tipos de entrada y los métodos de extracción disponibles pueden variar según el formato.
¿Cómo deben gestionarse los nombres de archivo ASP duplicados?
Defina la regla antes de extraer: rechazar duplicados, generar nombres únicos o conservar una estructura de carpetas relativa y validada.
Guías relacionadas para extraer recursos web y archivos de marcado
Consulte guías de extracción en C# para otros formatos web, de marcado y configuración almacenados en paquetes ZIP.