(JavaScript) Controlling Paths of Files Added to Zip
When appending files to a .zip, it can be difficult to get the paths exactly as you want them. This example describes a way that you can control the path information when adding a single file at a time to a .zip. Note: This example requires Chilkat v11.0.0 or greater.
var success = false;
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
var zip = new CkZip();
// Intialize the zip object by calling NewZip.
success = zip.NewZip("myZip.zip");
// 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.)
var saveExtraPath = false;
success = zip.AddFile("/temp/a/hamlet.xml",saveExtraPath);
// For brevity, this example will not check the return status...
// The saveExtraPath argument, if set, will cause the path information
// passed in the 1st argument to be saved in the .zip.
// To add "a/hamlet.xml", do this:
zip.AppendFromDir = "/temp";
// The saveExtraPath argument, if set, will cause the path information
// passed in the 1st argument to be saved in the .zip. But the path in AppendFromDir is
// not added to that path saved in the .zip. If there is a path in AppendFromDir then the
// path in the 1st argument must be relative, not preceded by a drive or \.
saveExtraPath = true;
success = zip.AddFile("a/hamlet.xml",saveExtraPath);
// To add "temp/a/hamlet.xml", do this:
zip.AppendFromDir = "/";
saveExtraPath = true;
success = zip.AddFile("temp/a/hamlet.xml",saveExtraPath);
// The zip written here will contain hamlet.xml three times,
// each with a different relative path.
success = zip.WriteZipAndClose();
|