Aller au contenu principal
Version : 21

ZIP Create archive

ZIP Create archive ( fileToZip : 4D.File ; destinationFile : 4D.File ) : Object
ZIP Create archive ( folderToZip : 4D.Folder ; destinationFile : 4D.File { ; options : Integer }) : Object
ZIP Create archive ( zipStructure : Object ; destinationFile : 4D.File ) : Object

ParamètresTypeDescription
fileToZip4D.File→Objet fichier ou dossier à compresser
folderToZip4D.Folder→Objet fichier ou dossier à compresser
zipStructureObject→Objet fichier ou dossier à compresser
destinationFile4D.File→Fichier de destination de l'archive
optionsInteger→Si folderToZip utilisé : ZIP Without enclosing folder
RésultatObject←Objet statut
Historique
ReleaseModifications
19 R3Ajout des propriétés ZIP Compression LZMA, ZIP Compression xy, .level
18Ajout

Description​

La commande ZIP Create archive crée un objet d'archive ZIP compressée et renvoie le statut de l'opération.

Vous pouvez passer un objet 4D.File, 4D.Folder, ou une structure Zip en tant que premier paramètre :

  • fileToZip : passez simplement un 4D.File à compresser.

  • folderToZip : passez un 4D.Folder à compresser. Dans ce cas, le paramètre options vous permet de compresser uniquement le contenu du dossier (c'est-à-dire d'exclure le dossier parent). Par défaut, l'archive ZIP Create archive compressera le dossier et son contenu, de sorte que l'opération de décompression recrée un dossier. Si vous souhaitez que l'opération de décompression ne restaure que le contenu du dossier, passez la constante ZIP Without enclosing folder dans le paramètre options.

  • zipStructure : passez un objet décrivant l'objet ZIP archive. Les propriétés suivantes sont disponibles pour définir la structure :

PropriétéTypeDescription
compressionInteger
  • ZIP Compression standard: Deflate compression (default)
  • ZIP Compression LZMA: LZMA compression
  • ZIP Compression XZ: XZ compression
  • ZIP Compression none: No compression
levelIntegerNiveau de compression. Valeurs possibles : 1 à 10. Une valeur plus faible produira un fichier plus volumineux, tandis qu'une valeur plus élevée produira un fichier plus petit. Le niveau de compression a toutefois un impact sur les performances. Default values if omitted:
  • ZIP Compression standard: 6
  • ZIP Compression LZMA: 4
  • ZIP Compression XZ: 4
encryptionIntegerThe encryption to use if a password is set:
  • ZIP Encryption AES128: AES encryption using 128-bit key.
  • ZIP Encryption AES192: Cryptage AES avec une clé de 192 bits.
  • ZIP Encryption AES256: Cryptage AES à l'aide d'une clé de 256 bits (par défaut si un mot de passe est défini).
  • ZIP Encryption none: Data is not encrypted (default if no password is set)
passwordTextUn mot de passe à définir si le chiffrement est requis.
HistoriqueCollection
  • une collection d'objets 4D.File ou 4D.Folder ou
  • une collection d'objets avec les propriétés suivantes :
  • PropriétéTypeDescription
    source4D.File ou 4D.FolderFichier ou dossier
    destinationTexte(facultatif) - Spécifie un chemin relatif pour changer l'organisation du contenu de l'archive
    optionnombre(facultatif) - ZIP Ignore invisible files ou 0 pour compresser l'intégralité du fichier
    callback4D.FunctionUne formule de rétro-appel qui recevra la progression de la compression (0 à 100) dans $1.

    Dans le paramètre destinationFile, passez un objet 4D.File décrivant l'archive ZIP à créer (nom, emplacement, etc.). Il est conseillé d'utiliser l'extension ".zip" si vous souhaitez que l'archive ZIP soit traitée automatiquement par un logiciel.

    Une fois qu'une archive est créée, vous pouvez utiliser la commande [ZIP Read archive] (zip-read-archive.md) pour y accéder.

    Status object

    L'objet statut retourné contient les propriétés suivantes :

    PropriétéTypeDescription
    statusTextTextError message (if any):
    • Cannot open ZIP archive
    • Cannot create ZIP archive
    • Password is required for encryption
    statusIntegerCode d'état
    successBooleanVrai si l'archive a été créée avec succès, sinon faux

    Exemple 1​

    Pour compresser un 4D.File :

    var $file; $destination : 4D.File
    var $status : Object

    $destination:=Folder(fk desktop folder).file("MyDocs/file.zip")
    $file:=Folder(fk desktop folder).file("MyDocs/text.txt")

    $status:=ZIP Create archive($file;$destination)

    Exemple 2​

    Pour compresser un 4D.Folder sans le dossier lui-même :

    var $folder : 4D.Folder
    var $destination : 4D.File
    var $status : Object

    $destination:=Folder(fk desktop folder).file("MyDocs/Images.zip")
    $folder:=Folder(fk desktop folder).folder("MyDocs/Images")

    $status:=ZIP Create archive($folder;$destination;ZIP Without enclosing folder)

    Exemple 3​

    Pour compresser une structure d'archive ZIP avec un mot de passe et une barre de progression :

    var $destination : 4D.File
    var $zip;$status : Object
    var progID : Integer

    $destination:=Folder(fk desktop folder).file("MyDocs/Archive.zip")

    $zip:=New object
    $zip.files:=Folder(fk desktop folder).folder("MyDocs/Resources").folders()
    $zip.password:="password"
    $zip.callback:=Formula(myFormulaCompressingMethod($1))

    progID:=Progress New //utilisation du composant 4D Progress

    $status:=ZIP Create archive($zip;$destination)

    Progress QUIT(progID)

    myFormulaCompressingMethod:

    #DECLARE ($current : Integer)
    Progress SET PROGRESS(progID;Num($current /100))

    Exemple 4​

    Vous souhaitez passer une collection de dossiers et de fichiers à compresser à l'objet zipStructure :

    var $destination : 4D.File
    var $zip;$err : Object
    $zip:=New object
    $zip.files:=New collection
    $zip.files.push(New object("source";Folder(fk desktop folder).file("Tests/text.txt")))
    $zip.files.push(New object("source";Folder(fk desktop folder).file("Tests/text2.txt")))
    $zip.files.push(New object("source";Folder(fk desktop folder).file("Images/image.png")))

    $destination:=Folder(fk desktop folder).file("file.zip")
    $err:=ZIP Create archive($zip;$destination)

    Exemple 5​

    Vous souhaitez utiliser un autre algorithme de compression à un niveau de compression élevé :

    var $destination : 4D.File
    var $zip; $err : Object

    $zip:=New object
    $zip.files:=New collection
    $zip.files.push(Folder(fk desktop folder).folder("images"))
    $zip.compression:=ZIP Compression LZMA
    $zip.level:=7 //4 par défaut

    $destination:=Folder(fk desktop folder).file("images.zip")
    $err:=ZIP Create archive($zip; $destination)

    Voir également​

    ZipArchive Class ZipFile Class ZipFolder Class ZIP Read archive

    Propriétés​

    Numéro de commande1640
    Thread safeoui