Introducción
En nuestros años ( ASI LLC ) desarrollando soluciones dentro del marco de Acumatica hemos experimentado múltiples instancias en las que archivos de un tipo u otro necesitan ser generados y manipulados dentro del sistema.
Un ejemplo de uso que revisaremos en este artículo es el archivado de archivos adjuntos a un documento dentro de una instancia de Acumatica -o- la adjunción de archivos desde dentro de un archivo .Zip a un documento dentro de una instancia de Acumatica.
.zip - PX.común.estándar
Para utilizar archivos .ZIP dentro de Acumatica necesitará añadir una referencia a la .dll PX.Common.Std dentro de su proyecto. Este .dll se encuentra en la carpeta bin de la instalación de la instancia.
ZipArchive
CrearDesde
Este método estático devuelve una instancia de ZipArchive que representa un archivo .ZIP. Este método tomará flujo os y bool onlyRead como parámetros.
El siguiente ejemplo de código ilustra la creación de un nuevo archivo zip utilizando un nuevo MemoryStream y estableciendo el parámetro onlyRead como false para permitir la adición de archivos a nuestro archivo .Zip creado.
GIST: [Creación del archivo .Zip (github.com)]
CreateFrom también se utiliza al abrir un archivo .ZIP preexistente. Para abrir un archivo preexistente primero debe recuperar su byte[] y crear un nuevo MemoryStream a partir de los datos, estableciendo la opción bool onlyRead como true.
GIST: [Abrir archivo .Zip existente (github.com)]
AddFile
Este método public void añade un archivo con el nombre dado y una matriz byte[] del archivo que se incluirá en el archivo .Zip.
GIST: [Adición de fichero al archivo .Zip creado (github.com)]
ObtenerArchivos
Este método devuelve una lista de ficheros dentro del archivo .Zip; la información de cada fichero se encapsula dentro de la clase interna ItemInfo.
GIST: [Iterar a través de nombres de archivo en Archive (github.com)]
GetItems
Este método se utiliza cuando sólo se desea extraer los ficheros de un directorio específico dentro del archivo. Utiliza el parámetro de cadena directorio.
AbrirLeer
Este método devuelve un flujo de un fichero dentro del archivo. El archivo se especifica proporcionando un nombre de archivo, este nombre
GIST: [Recuperar un archivo de ZipArchive (github.com)]
Ejemplos
A continuación encontrará ejemplos de cómo crear un nuevo archivo .Zip dentro de Acumatica, así como de cómo tomar un archivo .Zip adjunto a un documento y leer/guardar su contenido.
Creación de archivos
El siguiente ejemplo recuperará la lista de archivos adjuntos a un documento de Acumatica y creará un archivo .Zip que se adjuntará a continuación.
GIST: [Abre un archivo zip adjunto a un documento de Acumatica (github.com)]
Recuperación de archivos
El siguiente ejemplo recuperará el archivo .Zip adjunto a un documento de Acumatica y adjuntará todos los documentos dentro de ese archivo al documento de origen.
GIST: [Botón para crear archivo .Zip a partir de archivos adjuntos al documento de Acumatica (github.com)]
Conclusión
Con el uso de las Bibliotecas proporcionadas dentro de una instalación de Acumatica ERP, podemos crear y manipular archivos .Zip
¡Feliz codificación!