Web ZIP archive browser
Simple ASP.NET application for ZIP archive browsing.
This sample demonstrates the following features:
- Browsing folders of a ZIP archive.
- Using ASP.NET GridView to display a content of a ZIP archive folder.
- Extracting a file from a ZIP archive and sending it through HTTP to the user's web browser.
The following code snippets show the core of this sample:
Binding a ZIP archive folder listing to ASP.NET GridView control:
C#
// open the current ZIP archive
using (ZipArchive archive = new ZipArchive(
@"c:\temp\archive.zip",
ArchiveOpenMode.Open,
ArchiveAccessMode.Read))
{
// gets the list of files and directories
// in the root directory of the current ZIP archive
ZipItemCollection items =
archive.GetItems("*", TraversalMode.NonRecursive);
// sort the collection by item path (directories first)
items.Sort();
// bind the items to the grid
ArchiveFilesGridView.DataSource = items;
ArchiveFilesGridView.DataBind();
}
VB.NET
' open the current ZIP archive
Using archive As New ZipArchive( _
"c:\temp\archive.zip", _
ArchiveOpenMode.Open, _
ArchiveAccessMode.Read)
' gets the list of files and directories
' in the root of the current ZIP archive
Dim items As ZipItemCollection = _
archive.GetItems("*", TraversalMode.NonRecursive)
' sort the collection by item path (directories first)
items.Sort()
' bind the items to the grid
ArchiveFilesGridView.DataSource = items
ArchiveFilesGridView.DataBind()
End Using
Extracting a file from a ZIP archive and sending it through HTTP to the web browser:
C#
string currentPath = @"\dir\file.txt";
string currentFileName = Path.GetFileName(currentPath);
// open the current ZIP archive
using (ZipArchive archive = new ZipArchive(
@"c:\temp\archive.zip",
ArchiveOpenMode.Open,
ArchiveAccessMode.Read))
{
// clear response stream and set the response header and content type
response.Clear();
response.AddHeader(
"Content-Disposition",
string.Format("attachment; filename={0}", currentFileName));
response.ContentType = "application/octet-stream";
// extract (decompress) the file from the archive directly
// to the response stream
archive.ExtractFile(currentPath, response.OutputStream);
}
// close the current HTTP response and stop executing this page
response.End();
VB.NET
Dim currentPath As String = "\dir\file.txt"
Dim currentFileName As String = Path.GetFileName(currentPath)
' open the current ZIP archive
Using archive As New ZipArchive( _
"c:\temp\archive.zip", _
ArchiveOpenMode.Open, _
ArchiveAccessMode.Read)
' clear response stream and set the response header and content type
response.Clear()
response.AddHeader( _
"Content-Disposition", _
String.Format("attachment; filename={0}", currentFileName))
response.ContentType = "application/octet-stream"
' extract (decompress) the file from the archive directly
' to the response stream
archive.ExtractFile(currentPath, response.OutputStream)
End Using
' close the current HTTP response and stop executing this page
response.[End]()