Saltar al pie de página
USANDO IRONZIP

Cómo descomprimir archivos en .NET Core

1. Introducción

"Descomprimir" describe el proceso de sacar archivos y carpetas de un archivo ZIP y descomprimirlos. "Unzip" refers to the process of recovering compressed files or directories back to their original condition, so that they can be accessed and used again after being compressed into a ZIP file. Podemos agregar varios tipos de archivos a los archivos zip como imágenes, archivos TXT, etc.

Los usuarios pueden recuperar el contenido de un archivo ZIP mediante la descompresión, que es el proceso de revertir el proceso de compresión. Acceder a archivos o carpetas individuales que han sido empaquetados juntos para una transmisión, almacenamiento o intercambio más efectivo es un uso popular. Después de que se complete el procedimiento de "descomprimir", los archivos tienen su estructura original y pueden ser leídos, cambiados o utilizados según sea necesario por el usuario. En este artículo, vamos a descomprimir archivos en Asp.net core usando la Biblioteca IronZIP Archive.

2. En Asp.net Core, Resumen de descompresión de archivos

  1. Crear un nuevo proyecto Asp.net Core.
  2. Instalar la biblioteca IronZIP en el proyecto creado.
  3. Para descomprimir un archivo, instanciar la clase IronArchive.
  4. El archivo ZIP puede ser extraído usando la función ExtractArchiveToDirectory.
  5. Especificar el archivo de destino donde se necesita extraer el archivo descomprimido.

3. Biblioteca IronZIP

Iron Software creó la biblioteca .NET IronZIP, que facilita el manejo y gestión de archivos ZIP en aplicaciones .NET. Ofrece herramientas y características a los programadores, para que puedan interactuar con ZIP de varias maneras. Estos incluyen generar, extraer, comprimir, descomprimir, encriptar y modificar archivos y directorios dentro de los archivos ZIP.

3.1 Características de IronZIP

  • Creación de Archivos ZIP: La capacidad para que las aplicaciones .NET produzcan nuevos archivos ZIP desde el principio.
  • Extracción y Descompresión: La capacidad para eliminar archivos y directorios de paquetes ZIP preexistentes y descomprimir contenido.
  • Compresión: Proporciona herramientas para reducir archivos y carpetas dentro de archivos ZIP para hacerlos más pequeños para el transporte o almacenamiento.
  • Protección por contraseña y encriptación: Para proteger el contenido de los archivos ZIP, esta característica ofrece la capacidad de aplicar protección por contraseña y encriptar archivos ZIP.
  • Manipulación de Archivos: Permite a los programadores agregar, eliminar, actualizar o de otra manera trabajar con archivos y directorios dentro de paquetes ZIP.
  • Compatibilidad: Diseñado para funcionar en varias configuraciones de .NET, compatible con múltiples iteraciones del framework.
  • Optimización de Rendimiento: Orientado a maximizar la velocidad para que las aplicaciones .NET puedan manejar grandes archivos ZIP o conjuntos de datos de manera más efectiva.

Cuando se gestionan archivos ZIP para sus aplicaciones, los desarrolladores pueden encontrar que IronZIP es una herramienta útil. Dentro del framework de .NET, ofrece una variedad de características para trabajar con archivos ZIP programáticamente, ofreciendo simplicidad y versatilidad.

Para obtener los detalles más recientes sobre características, capacidades, compatibilidad y cualquier nueva funcionalidad incluida en versiones posteriores, consulte la documentación oficial, notas de lanzamiento o el sitio web de IronZIP, ya que las bibliotecas de software se actualizan y mejoran con el tiempo. Para saber más, haga clic aquí.

3.2 Creación de un nuevo proyecto en Visual Studio

Seleccione la opción Archivo después de iniciar el programa Visual Studio. Elija "nuevo proyecto" y luego "Aplicación Web Asp.Net core".

En el cuadro de texto pertinente, escriba el nombre del proyecto y elija la ubicación del archivo. A continuación, haga clic en el botón Crear y elija la versión de .NET Framework necesaria.

Ahora se generará la estructura de la aplicación elegida por el proyecto de Visual Studio. En este caso, se está utilizando ASP.NET MVC. Por lo tanto, tenemos dos opciones: o utilizar el controlador actual, que le permite agregar el código y construir/ejecutar la aplicación, o crear uno nuevo.

La biblioteca se puede agregar después y probar el código.

4. Descarga del paquete IronZIP

4.1 Uso de Visual Studio

Puede instalar paquetes directamente en su solución utilizando la característica de Administrador de Paquetes NuGet de Visual Studio. Puede utilizar la instantánea abajo para acceder al Administrador de Paquetes NuGet.

Cómo Descomprimir Archivos en .NET Core: Figura 1 - Cómo Acceder al Administrador de Paquetes NuGet

Proporciona un cuadro de búsqueda que muestra una lista de paquetes del sitio web de NuGet. La captura de pantalla a continuación nos muestra dónde buscar la frase "IronZIP" en el administrador de paquetes.

Cómo Descomprimir Archivos en .NET Core: Figura 2 - Buscando IronZIP en el Administrador de Paquetes NuGet

En la imagen de arriba, se muestra una lista de términos de búsqueda pertinentes. Se requiere seleccionar la opción requerida para instalar el paquete de solución.

4.2 Uso de la línea de comandos de Visual Studio

En Visual Studio, elija Herramientas > Administrador de Paquetes NuGet para ver la Consola del Administrador de Paquetes.

Introduzca la siguiente línea en la ficha del terminal del administrador de paquetes:

Install-Package IronZip

Al descargar e instalar en el proyecto activo, el paquete está listo para su uso.

4.3 Descarga directa desde el sitio web de NuGet

Usando el tercer método, se puede obtener el paquete NuGet directamente desde el sitio web.

Navegue allí para abrir el enlace.

Seleccione la opción de descarga del paquete en el menú a la derecha.

Haga doble clic en el paquete una vez descargado. Por sí solo, se instalará.

Una vez más, cargue la solución y comience a usarla en el proyecto.

4.4 Descarga directa desde el sitio web de IronZIP

Haga clic en este enlace para obtener el último paquete directamente del sitio web. Una vez descargado, siga los procedimientos adjuntos para agregar el paquete al proyecto.

  • Seleccione el proyecto con un clic derecho desde la ventana de solución.
  • Seleccione la referencia y navegue por su ubicación una vez que haya sido descargada.
  • Haga clic en Aceptar después para agregar la referencia.

4.5 Descomprimir archivos en el núcleo Asp.net

Deberá proporcionar el nombre del archivo y el destino donde desea extraer el archivo para usar IronZIP en C# para extraer un archivo específico de un archivo ZIP.

Código de muestra aquí:

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using IronZip;

namespace IronPDF_WebApp.Pages
{
    public class IndexModel : PageModel
    {
        private readonly ILogger<IndexModel> _logger;

        public IndexModel(ILogger<IndexModel> logger)
        {
            _logger = logger;
        }

        public IActionResult OnPost()
        {
            try
            {
                // Retrieve the uploaded file from the form
                var file = Request.Form.Files[0];

                // Set the file path where the file will be saved
                string filepath = @"C:\temp\uploads\";

                // Save the uploaded file to the specified filepath
                using (var stream = new FileStream(filepath + file.FileName, FileMode.Create))
                {
                    file.CopyToAsync(stream);
                }

                // Extract the ZIP archive to the specified directory
                string extractfile = @"C:\temp\extracted";
                IronZipArchive.ExtractArchiveToDirectory(filepath + file.FileName, extractfile);
            }
            catch (Exception ex)
            {
                // Handle exception and redirect to Error page
                _logger.LogError(ex, "An error occurred while extracting the ZIP file.");
                return RedirectToAction("Error");
            }

            return RedirectToAction("Get");
        }
    }
}
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using IronZip;

namespace IronPDF_WebApp.Pages
{
    public class IndexModel : PageModel
    {
        private readonly ILogger<IndexModel> _logger;

        public IndexModel(ILogger<IndexModel> logger)
        {
            _logger = logger;
        }

        public IActionResult OnPost()
        {
            try
            {
                // Retrieve the uploaded file from the form
                var file = Request.Form.Files[0];

                // Set the file path where the file will be saved
                string filepath = @"C:\temp\uploads\";

                // Save the uploaded file to the specified filepath
                using (var stream = new FileStream(filepath + file.FileName, FileMode.Create))
                {
                    file.CopyToAsync(stream);
                }

                // Extract the ZIP archive to the specified directory
                string extractfile = @"C:\temp\extracted";
                IronZipArchive.ExtractArchiveToDirectory(filepath + file.FileName, extractfile);
            }
            catch (Exception ex)
            {
                // Handle exception and redirect to Error page
                _logger.LogError(ex, "An error occurred while extracting the ZIP file.");
                return RedirectToAction("Error");
            }

            return RedirectToAction("Get");
        }
    }
}
Imports Microsoft.AspNetCore.Mvc
Imports Microsoft.AspNetCore.Mvc.RazorPages
Imports IronZip

Namespace IronPDF_WebApp.Pages
	Public Class IndexModel
		Inherits PageModel

		Private ReadOnly _logger As ILogger(Of IndexModel)

		Public Sub New(ByVal logger As ILogger(Of IndexModel))
			_logger = logger
		End Sub

		Public Function OnPost() As IActionResult
			Try
				' Retrieve the uploaded file from the form
				Dim file = Request.Form.Files(0)

				' Set the file path where the file will be saved
				Dim filepath As String = "C:\temp\uploads\"

				' Save the uploaded file to the specified filepath
				Using stream = New FileStream(filepath & file.FileName, FileMode.Create)
					file.CopyToAsync(stream)
				End Using

				' Extract the ZIP archive to the specified directory
				Dim extractfile As String = "C:\temp\extracted"
				IronZipArchive.ExtractArchiveToDirectory(filepath & file.FileName, extractfile)
			Catch ex As Exception
				' Handle exception and redirect to Error page
				_logger.LogError(ex, "An error occurred while extracting the ZIP file.")
				Return RedirectToAction("Error")
			End Try

			Return RedirectToAction("Get")
		End Function
	End Class
End Namespace
$vbLabelText   $csharpLabel

En el código de arriba, asegúrese de que el espacio de nombres de IronZIP esté importado. Incluida en la clase IronZipArchive de IronZIP está la función ExtractArchiveToDirectory. Esto nos permite pasar dos parámetros: el sistema de archivos fuente y la ruta del archivo que se descomprimirá. Los archivos ZIP ZIPArchive pueden tener cualquier número de contenido, y el contenido puede ser extraído utilizando y guardado en un directorio especificado por el archivo. La ruta del directorio, que se utiliza como punto de extracción para el contenido del archivo ZIP único, es el único parámetro requerido por el método ExtractArchiveToDirectory.

Para extraer todos los archivos al directorio designado, esta función internamente recorre todos los archivos y directorios dentro del paquete ZIP. Cuando surge una excepción, como cuando falta el archivo ZIP o hay problemas con el procedimiento de extracción, asegúrese de manejarlo cuidadosamente. Las excepciones pueden ser capturadas y manejadas utilizando bloques try-catch. Para actividades de extracción masiva, el método ExtractArchiveToDirectory facilita la extracción al gestionar la extracción de todos los archivos y directorios dentro del archivo ZIP. Los archivos ZIP pueden ser creados con la ayuda del método de extensión IronZIP.

Para leer más sobre la biblioteca IronZIP, haga clic aquí.

5. Conclusión

Los desarrolladores pueden manejar la compresión, extracción y manipulación de archivos ZIP con la ayuda de IronZIP, una biblioteca .NET diseñada específicamente para gestionar archivos ZIP en aplicaciones de C#. Al simplificar procedimientos complejos y hacer que las operaciones de archivos como extraer archivos específicos, extraer archivos en bloque, agregar entradas y modificar archivos existentes sean más simples, IronZIP emplea una API intuitiva.

Con esta biblioteca, los desarrolladores pueden mejorar las capacidades de gestión de archivos sin tener que empezar desde cero en proyectos en C#. Se integra sin esfuerzo. Gracias a su versatilidad, se puede alterar dinámicamente el contenido del ZIP, agregando, cambiando y eliminando archivos para satisfacer una variedad de requisitos de aplicación.

Al tratar con situaciones como archivos ZIP faltantes o dañados, las sólidas características de manejo de excepciones de IronZIP garantizan un flujo de trabajo consistente y facilitan la remediación de errores. Mientras que IronZIP históricamente ha ofrecido una solución confiable para gestionar archivos ZIP en entornos .NET, tenga en cuenta que mi entendimiento puede no reflejar las actualizaciones más recientes. El precio de IronZIP comienza en $799 y viene con una versión gratuita de desarrollador. Para saber más sobre la licencia, podemos referirnos aquí. Para el producto de software Iron, compruebe aquí.

Preguntas Frecuentes

¿Cómo puedo descomprimir archivos en ASP.NET Core?

Puedes descomprimir archivos en ASP.NET Core usando la biblioteca IronZIP. Primero, instala IronZIP a través del Administrador de Paquetes NuGet en Visual Studio, luego usa la clase IronArchive y el método ExtractArchiveToDirectory para extraer archivos de un archivo ZIP a un directorio especificado.

¿Cuáles son las principales características de IronZIP para manejar archivos ZIP?

IronZIP ofrece varias características para manejar archivos ZIP, incluyendo la creación, extracción, compresión, encriptación y manipulación de archivos ZIP. Soporta protección con contraseña y está optimizado para el rendimiento, compatible con varios marcos .NET.

¿Cómo instalo IronZIP en un proyecto C#?

Para instalar IronZIP en un proyecto C#, usa el Administrador de Paquetes NuGet en Visual Studio. Busca 'IronZIP' e instálalo. Alternativamente, usa la Consola del Administrador de Paquetes con el comando Install-Package IronZIP.

¿Puede IronZIP usarse para encriptar archivos ZIP?

Sí, IronZIP puede encriptar archivos ZIP. Incluye herramientas para protección con contraseña y encriptación, asegurando la seguridad de los contenidos dentro de los archivos ZIP.

¿Qué debo hacer si encuentro errores durante la extracción de archivos ZIP en ASP.NET Core?

Si encuentras errores durante la extracción de archivos ZIP, usa las características de manejo de excepciones de IronZIP. Implementa bloques try-catch para manejar excepciones como archivos ZIP faltantes o corruptos.

¿Hay una versión gratuita de IronZIP disponible para desarrolladores?

Sí, IronZIP ofrece una versión gratuita para desarrolladores que te permite explorar sus características sin ningún costo inicial, junto a sus licencias pagadas.

¿Por qué debería usar IronZIP para manejar archivos ZIP en mis proyectos ASP.NET Core?

IronZIP simplifica la gestión de archivos ZIP en proyectos ASP.NET Core al ofrecer una API intuitiva para crear, extraer y modificar archivos ZIP, mejorando las capacidades de gestión de archivos.

¿Cómo maneja IronZIP la extracción de archivos ZIP?

IronZIP maneja la extracción de archivos ZIP usando el método ExtractArchiveToDirectory, que extrae todos los archivos y directorios de un archivo ZIP a una ruta de directorio especificada, gestionando eficientemente cada elemento dentro del paquete ZIP.

¿Cuál es el proceso para crear un nuevo proyecto ASP.NET Core para usar con IronZIP?

Para crear un nuevo proyecto ASP.NET Core para usar con IronZIP, configura un nuevo proyecto en Visual Studio, instala IronZIP a través de NuGet e implementa la clase IronArchive para manejar archivos ZIP con métodos como ExtractArchiveToDirectory.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más