private void CreateTar(string outputTarFilename, string sourceDirectory) { Response.ClearContent(); Response.ClearHeaders(); Response.Clear(); Response.AddHeader("Content-Disposition", "attachment; filename=" + outputTarFilename); Response.ContentType = "application/tar"; using (FileStream fs = new FileStream(outputTarFilename, FileMode.Create, FileAccess.Write, FileShare.None)) using (Stream gzipStream = new GZipOutputStream(fs)) using (TarArchive tarArchive = TarArchive.CreateOutputTarArchive(gzipStream)) { AddDirectoryFilesToTar(tarArchive, sourceDirectory, true); } } private void AddDirectoryFilesToTar(TarArchive tarArchive, string sourceDirectory, bool recurse) { try { // Recursively add sub-folders if (recurse) { string[] directories = Directory.GetDirectories(sourceDirectory); foreach (string directory in directories) AddDirectoryFilesToTar(tarArchive, directory, recurse); } // Add files string[] filenames = Directory.GetFiles(sourceDirectory); foreach (string filename in filenames) { TarEntry tarEntry = TarEntry.CreateEntryFromFile(filename); tarArchive.WriteEntry(tarEntry, true); } // Response.Flush(); // Response.End(); } catch (Exception ex) { } }
ex
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)