Saltar para o conteúdo principal
Versão: Próximo

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

ParâmetroTipoDescrição
fileToZip4D. FileObjeto File ou Folder a comprimir
folderToZip4D. FolderObjeto File ou Folder a comprimir
zipStructureObjectObjeto File ou Folder a comprimir
destinationFile4D. FileArquivo destino para o arquivo
optionsIntegerOpção folderToZip: ZIP Without enclosing folder
ResultadosObjectObjeto de estado
História
ReleaseMudanças
19 R3Adição das propriedades ZIP Compression LZMA, ZIP Compression xy, .level
18Adicionado

Descrição

The ZIP Create archive command creates a compressed ZIP archive object and returns the status of the operation.

You can pass a 4D. File, a 4D. Folder, or a zip structure object as first parameter:

  • fileToZip: You simply pass a 4D.File to compress.

  • folderToZip: você passa um 4D.Folder para compactar. In this case, the options parameter allows you to compress only the contents of the folder (i.e., exclude the enclosing folder). By default, ZIP Create archive will compress the folder and its contents, so that the decompressing operation will recreate a folder. If you want the decompressing operation to restore only the contents of the folder, pass the ZIP Without enclosing folder constant in the options parameter.

  • zipStructure: pode passar um objeto descrevendo o objeto ZIP archive. As propriedades abaixo estão disponíveis para definir a estrutura:

PropriedadeTipoDescrição
compressionInteger
  • ZIP Compression standard: Deflate compression (default)
  • ZIP Compression LZMA: LZMA compression
  • ZIP Compression XZ: XZ compression
  • ZIP Compression none: No compression
  • levelIntegerNível de compressão. Valores possíveis: de 1 a 10. Um valor pequeno produz um arquivo de maior tamanho, enquanto um valor grande produz um arquivo de tamanho menor. O nível de compactação tem um impacto na performance. 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: AES encryption using 192-bit key.
  • ZIP Encryption AES256: AES encryption using 256-bit key (default if password is set).
  • ZIP Encryption none: Data is not encrypted (default if no password is set)
  • senhaTextUma senha a usar se a criptografia for necessária.
    filesCollection
  • a collection of 4D.File or 4D.Folder objects or
  • a collection of objects with the following properties:
  • PropertyTypeDescription
    source4D.File or 4D.FolderFile or Folder
    destinationText(optional) - Specify a relative filepath to change the organization of the contents of the archive
    optionnumber(optional) - ZIP Ignore invisible files or 0 to compress all of the file
    callback4D. FunctionUma fórmula de callback (retrochamada) que recebe o progresso da compactação (0-100) em $1.

    In the destinationFile parameter, pass a 4D.File object describing the ZIP archive to create (name, location, etc.). É recomendado usar a extensão ".zip" se quiser que o arquivo ZIP seja processado automaticamente por um software.

    Once an archive is created, you can use the ZIP Read archive command to access it.

    Status object

    O estado do objeto retornado contém as propriedades abaixo:

    PropriedadeTipoDescrição
    statusTextTextError message (if any):
  • Cannot open ZIP archive
  • Cannot create ZIP archive
  • Password is required for encryption
  • statusIntegerCódigo de estado
    successParâmetrosTrue se o arquivo for criado com sucesso, senão false

    Exemplo 1

    Para compactar um 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)

    Exemplo 2

    Para comprimir uma 4D.Folder sem a própria pasta:

     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)

    Exemplo 3

    Para compactar uma estrutura de arquivo ZIP sem uma senha e barra de progresso:

     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 //we use the 4D Progress component

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

    Progress QUIT(progID)

    myFormulaCompressingMethod:

     var $1 : Integer
    Progress SET PROGRESS(progID;Num($1/100))

    Exemplo

    You want to pass a collection of folders and files to compress to the zipStructure object:

     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)

    Exemplo 2

    Deseja utilizar um algoritmo de compressão alternativo com um elevado nível de compressão:

    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 //padrão é 4

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

    Veja também

    ZipArchive Class ZipFile Class ZipFolder Class ZIP Read archive