<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://xceed.com/CS/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Xceed Zip for .NET</title><link>http://xceed.com/CS/forums/17/ShowForum.aspx</link><description>Discussions about Xceed Zip for .NET and Real-Time Zip for .NET</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Debug Build: 61120.2)</generator><item><title>Re: Can you dynamically define a folder structure while streaming from ASP.NET?</title><link>http://xceed.com/CS/forums/thread/30460.aspx</link><pubDate>Wed, 01 Jun 2011 13:17:45 GMT</pubDate><guid isPermaLink="false">14592c03-f9d0-4f6b-b4cd-71e0e1b1f679:30460</guid><dc:creator>Justin</dc:creator><slash:comments>0</slash:comments><comments>http://xceed.com/CS/forums/thread/30460.aspx</comments><wfw:commentRss>http://xceed.com/CS/forums/commentrss.aspx?SectionID=17&amp;PostID=30460</wfw:commentRss><description>&lt;p&gt;I figured it out. The issue was the syntax for my destination pathing.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Here is the corrected code in full (changes called out in &lt;b&gt;bold&lt;/b&gt;)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;lt;code&amp;gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;protected void btnDownload_Click(object sender, EventArgs e)&lt;br&gt;{&lt;br&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;		&lt;/span&gt;var fileList = new Dictionary&amp;lt;string, string&amp;gt;&lt;br&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;					&lt;/span&gt;{&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;						&lt;/span&gt;{@"C:\Data\Files\1.txt", &lt;b&gt;&lt;i&gt;@"Examples\1.txt"&lt;/i&gt;&lt;/b&gt;}&lt;br&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;						&lt;/span&gt;,&amp;nbsp;{@"C:\Data\Files\2.txt", &lt;b&gt;&lt;i&gt;@"Folder\2.txt"&lt;/i&gt;&lt;/b&gt;}&lt;br&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;						&lt;/span&gt;,&amp;nbsp;{@"C:\Data\Files\3.txt", &lt;b&gt;&lt;i&gt;@"Yesterday\3.txt"&lt;/i&gt;&lt;/b&gt;}&lt;br&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;					&lt;/span&gt;};&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;		&lt;/span&gt;Response.Clear();&lt;br&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;		&lt;/span&gt;Response.ClearHeaders();&lt;br&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;		&lt;/span&gt;Response.Expires = -1;&lt;br&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;		&lt;/span&gt;Response.Buffer = false;&lt;br&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;		&lt;/span&gt;Response.ContentType = "application/x-zip-compressed";&lt;br&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;		&lt;/span&gt;Response.AddHeader("Content-Disposition", "attachment;filename=Files.zip");&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;		&lt;/span&gt;using (var zipWriter = new ZipWriter(Response.OutputStream))&lt;br&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;		&lt;/span&gt;{&lt;br&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;				&lt;/span&gt;foreach (var fileToCompress in fileList)&lt;br&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;				&lt;/span&gt;{&lt;br&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;						&lt;/span&gt;if (File.Exists(fileToCompress.Key) == false) continue;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;						&lt;/span&gt;var fileInfo = new FileInfo(fileToCompress.Key);&lt;br&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;						&lt;/span&gt;var zipItemLocalHeader = new ZipItemLocalHeader(fileToCompress.Value&lt;br&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;															&lt;/span&gt;,&amp;nbsp;CompressionMethod.Deflated&lt;br&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;															&lt;/span&gt;, CompressionLevel.Normal);&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;						&lt;/span&gt;zipWriter.WriteItemLocalHeader(zipItemLocalHeader);&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;						&lt;/span&gt;var buffer = new byte[1023];&lt;br&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;						&lt;/span&gt;using (var fileStream = fileInfo.OpenRead())&lt;br&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;						&lt;/span&gt;{&lt;br&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;								&lt;/span&gt;int read;&lt;br&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;								&lt;/span&gt;do&lt;br&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;								&lt;/span&gt;{&lt;br&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;										&lt;/span&gt;read = fileStream.Read(buffer, 0, buffer.Length);&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;										&lt;/span&gt;zipWriter.WriteItemData(buffer, 0, read);&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;										&lt;/span&gt;Response.Flush();&lt;br&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;								&lt;/span&gt;} while (read != 0 &amp;amp;&amp;amp; Response.IsClientConnected);&lt;br&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;						&lt;/span&gt;}&lt;br&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;				&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;				&lt;/span&gt;zipWriter.CloseZipFile();&lt;br&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;				&lt;/span&gt;Response.Flush();&lt;br&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;				&lt;/span&gt;Response.End();&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;		&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/code&amp;gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Can you dynamically define a folder structure while streaming from ASP.NET?</title><link>http://xceed.com/CS/forums/thread/30383.aspx</link><pubDate>Fri, 20 May 2011 19:04:53 GMT</pubDate><guid isPermaLink="false">14592c03-f9d0-4f6b-b4cd-71e0e1b1f679:30383</guid><dc:creator>Justin</dc:creator><slash:comments>0</slash:comments><comments>http://xceed.com/CS/forums/thread/30383.aspx</comments><wfw:commentRss>http://xceed.com/CS/forums/commentrss.aspx?SectionID=17&amp;PostID=30383</wfw:commentRss><description>&lt;p&gt;I'm attempting to zip and stream files from asp.net. I&amp;nbsp;found the following post which works great:&lt;/p&gt;&lt;p&gt;&lt;a href="http://xceed.com/CS/forums/permalink/13036/13034/ShowThread.aspx#13034"&gt;http://xceed.com/CS/forums/permalink/13036/13034/ShowThread.aspx#13034&lt;/a&gt;&lt;/p&gt;&lt;p&gt;However during this process I would like to change the folder structure.&lt;br&gt;My goal is to minimize disk and memory usage.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Here is an example:&lt;/p&gt;&lt;p&gt;Given this DataSource:&lt;br&gt;&amp;lt;code&amp;gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;var fileList = new Dictionary&amp;lt;string, string&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{@"C:\Data\Files\1.txt",@"C:\Examples\1.txt"},&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{@"C:\Data\Files\2.txt",@"C:\Folder\2.txt"},&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{@"C:\Data\Files\3.txt",@"C:\Yesterday\3.txt"}&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;};&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;code&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;And assuming my physical files &lt;/p&gt;&lt;p&gt;"C:\Data\Files\1.txt"&lt;br&gt;"C:\Data\Files\2.txt"&lt;br&gt;"C:\Data\Files\3.txt"&amp;nbsp;&lt;/p&gt;&lt;p&gt;When the user finishes downloading the zip, I would like the folder structure to be:&lt;/p&gt;&lt;p&gt;"C:\Examples\1.txt"&lt;br&gt;"C:\Folder\2.txt"&lt;br&gt;"C:\Yesterday\3.txt"&lt;/p&gt;&lt;p&gt;How do I accomplish this?&lt;/p&gt;</description></item></channel></rss>