Extract() can accept a filename parameter (which may contain wildcards) to extract only certain files from an archive. This is useful if the programmer only wants to extract certain files.
Some developers wish to call Extract() multiple times. For example, the archive may contain more than just the files that are needed, or some files should be saved in a different location than others from the archive. Unfortunately, the current version of Archive has a known issue when unpacking a zip file using more than one Extract() call. In some cases, Archive may only unzip some of the files and then time out.
This behavior has been determined to occur when calling Extract() more than once and when there are approximately 500 or more files in an archive.
For example, if test.zip contains 700 files the following C# code will timeout:
SAARCHIVELib.ArchiveClass arch = new SAARCHIVELib.ArchiveClass();
arch.ArchiveType = SAArchiveType.SAZip;
arch.PreservePath = true;
arch.OpenArchive(Server.MapPath(".") + "\\test.zip");
arch.ExtractPath = Server.MapPath(".")+ "\\unzipped\\";
arch.Extract("*.txt");
arch.Extract("*.xml");
arch.CloseArchive();
Response.Write("File unzipped.");
|