Sample code for 30+ languages & platforms
DataFlex Requires Chilkat v11.0.0+

Modify Name of File Stored within Zip when Creating a .zip

See more Zip Examples

Demonstrates how to create a zip where the filename within the .zip is different than the filename that was added from the filesystem.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoZip
    Boolean iSaveExtraPath
    Variant vEntry
    Handle hoEntry
    String sTemp1

    Move False To iSuccess

    //  This example requires the Chilkat API to have been previously unlocked.
    //  See Global Unlock Sample for sample code.

    Get Create (RefClass(cComChilkatZip)) To hoZip
    If (Not(IsComObjectCreated(hoZip))) Begin
        Send CreateComObject of hoZip
    End

    //  Intialize the zip object by calling NewZip.
    Get ComNewZip Of hoZip "myZip.zip" To iSuccess

    //  Add a reference to a file on disk to the zip object.
    //  (When appending files to a zip, the files are not actually
    //  read into memory.  References to the file(s) are added.
    //  When WriteZip is called, the referenced files are streamed in
    //  and compressed to the .zip.)
    Move False To iSaveExtraPath
    Get ComAddFile Of hoZip "/temp/a/hamlet.xml" iSaveExtraPath To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoZip To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    //  The zip object references a single file.
    //  Retrieve the entry object...
    Get Create (RefClass(cComChilkatZipEntry)) To hoEntry
    If (Not(IsComObjectCreated(hoEntry))) Begin
        Send CreateComObject of hoEntry
    End
    Get pvComObject of hoEntry to vEntry
    Get ComEntryAt Of hoZip 0 vEntry To iSuccess

    //  Set the entry's filename to anything you want:
    Set ComFileName Of hoEntry To "somethingElse.xml"

    //  Note: Internally, the zip component retains the name of
    //  the file referenced.  The current setting of the zip entry's
    //  FileName property is stored in the .zip when writing.

    //  The zip written here will contain somethingElse.xml
    Get ComWriteZipAndClose Of hoZip To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoZip To sTemp1
        Showln sTemp1
    End
    Else Begin
        Showln "Zip created!"
    End



End_Procedure