[
  {
    "Id": "830271",
    "ThreadId": "354033",
    "Html": "\r\n<h3>ZipOutputStream append data file to Exist Entry?</h3>\r\n<p>Good day, asp.net c#, Framework 4.0&nbsp;</p>\r\n<div>\r\n<p>Im using Ionic.Zip for compress data file (uploader handler) to fly.</p>\r\n<p>Upload large files.</p>\r\n<p>If file uploaded &nbsp;full content (not chunks) - to be Ok, but if file upload with chunks...i have to problem.</p>\r\n<p>How i can add all chunks upload file to archive (one file - one entry)?&nbsp;<span>without saving</span><span>&nbsp;</span><span>the file itself</span><span>&nbsp;</span><span>drive.</span></p>\r\n<p><span>sorry for my english.</span></p>\r\n<p><span>parts of my code:</span></p>\r\n<p><span>Create temp file with lenght = currents chunk</span></p>\r\n<pre><span>&nbsp;</span><span>using</span><span> </span><span>(</span><span>FileStream</span><span> fs </span><span>=</span><span> </span><span>new</span><span> </span><span>FileStream</span><span>(</span><span>Path</span><span>.</span><span>Combine</span><span>(</span><span>pathToCreate</span><span>,</span><span> </span><span class=\"str\">&quot;chunkfile&quot;</span><span>),</span><span> </span><span>FileMode</span><span>.</span><span>Create</span><span>))</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span>{</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; buffer </span><span>=</span><span> </span><span>new</span><span> </span><span>byte</span><span>[</span><span>fileUpload</span><span>.</span><span>InputStream</span><span>.</span><span>Length</span><span>];</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fileUpload</span><span>.</span><span>InputStream</span><span>.</span><span>Read</span><span>(</span><span>buffer</span><span>,</span><span> </span><span>0</span><span>,</span><span> buffer</span><span>.</span><span>Length</span><span>);</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fs</span><span>.</span><span>Write</span><span>(</span><span>buffer</span><span>,</span><span> </span><span>0</span><span>,</span><span> buffer</span><span>.</span><span>Length</span><span>);</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span>}</span></pre>\r\n<p>Get zip entry:</p>\r\n<pre><span>using</span><span> </span><span>(</span><span>ZipFile</span><span> zipfile </span><span>=</span><span> </span><span>ZipFile</span><span>.</span><span>Read</span><span>(</span><span>fullpath</span><span>))</span><span><br></span><span>{</span><span> <br></span><span>if</span><span> </span><span>(</span><span>zipfile</span><span>.</span><span>ContainsEntry</span><span>(</span><span>fileName</span><span>))</span><span><br></span><span>{</span><span><br>zipflag </span><span>=</span><span> </span><span>true</span><span>;</span><span><br></span><span>}</span><span><br></span><span>}</span></pre>\r\n<pre><span>If</span><span> </span><span>Entry</span><span> exist </span><span>-</span><span> append data</span><span>,</span><span> </span><span>if</span><span> </span><span>not</span><span>,</span><span> create </span><span>new</span><span>:</span></pre>\r\n<pre><span>&nbsp;</span><span>if</span><span> </span><span>(!</span><span>zipflag</span><span>)</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span>{</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span>using</span><span> </span><span>(</span><span>ZipFile</span><span> zipfile </span><span>=</span><span> </span><span>ZipFile</span><span>.</span><span>Read</span><span>(</span><span>fullpath</span><span>))</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span>{</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span>using</span><span> </span><span>(</span><span> </span><span>FileStream</span><span> input </span><span>=</span><span> </span><span>new</span><span> </span><span>FileStream</span><span> </span><span>(</span><span>Path</span><span>.</span><span>Combine</span><span>(</span><span>pathToCreate</span><span>,</span><span> </span><span class=\"str\">&quot;chunkfile&quot;</span><span>),</span><span> </span><span>FileMode</span><span>.</span><span>Open</span><span>,</span><span> </span><span>FileAccess</span><span>.</span><span>Read</span><span>))</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span>{</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span>using</span><span> </span><span>(</span><span>FileStream</span><span> output </span><span>=</span><span> </span><span>new</span><span> </span><span>FileStream</span><span>(</span><span>fullpath</span><span>,</span><span> </span><span>FileMode</span><span>.</span><span>Create</span><span>,</span><span> </span><span>FileAccess</span><span>.</span><span>Write</span><span>))</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span>{</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span>using</span><span> </span><span>(</span><span>ZipOutputStream</span><span> zipout </span><span>=</span><span> </span><span>new</span><span> </span><span>ZipOutputStream</span><span>(</span><span>output</span><span>))</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span>{</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; buffer </span><span>=</span><span> </span><span>new</span><span> </span><span>byte</span><span>[</span><span>input</span><span>.</span><span>Length</span><span>];</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; zipout</span><span>.</span><span>PutNextEntry</span><span>(</span><span>fileName</span><span>);</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span>int</span><span> size</span><span>;</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span>do</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span>{</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; size </span><span>=</span><span> input</span><span>.</span><span>Read</span><span>(</span><span>buffer</span><span>,</span><span> </span><span>0</span><span>,</span><span> buffer</span><span>.</span><span>Length</span><span>);</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; zipout</span><span>.</span><span>Write</span><span>(</span><span>buffer</span><span>,</span><span> </span><span>0</span><span>,</span><span> size</span><span>);</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span>}</span><span> </span><span>while</span><span> </span><span>(</span><span>size </span><span>&gt;</span><span> </span><span>0</span><span>);</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span>}</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span>}</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span>}</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span>}</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span>}</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span>else</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span>{</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; buffer </span><span>=</span><span> </span><span>FileArray</span><span>(</span><span>Path</span><span>.</span><span>Combine</span><span>(</span><span>pathToCreate</span><span>,</span><span> </span><span class=\"str\">&quot;chunkfile&quot;</span><span>));</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span>AppendAllBytes</span><span>(</span><span>fullpath</span><span>,</span><span> buffer</span><span>);</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span>}</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span>}</span></pre>\r\n<p>&nbsp;</p>\r\n<pre><span>public</span><span> </span><span>static</span><span> </span><span>void</span><span> </span><span>AppendAllBytes</span><span>(</span><span>string</span><span> path</span><span>,</span><span> </span><span>byte</span><span>[]</span><span> bytes</span><span>)</span><span><br></span><span>{</span><span><br></span><span>using</span><span> </span><span>(</span><span>var</span><span> stream </span><span>=</span><span> </span><span>new</span><span> </span><span>FileStream</span><span>(</span><span>path</span><span>,</span><span> </span><span>FileMode</span><span>.</span><span>Append</span><span>))</span><span><br></span><span>{</span><span><br></span><span>using</span><span> </span><span>(</span><span>ZipOutputStream</span><span> zipout </span><span>=</span><span> </span><span>new</span><span> </span><span>ZipOutputStream</span><span>(</span><span>path</span><span>))</span><span><br></span><span>{</span><span><br>zipout</span><span>.</span><span>Write</span><span>(</span><span>bytes</span><span>,</span><span> </span><span>0</span><span>,</span><span> bytes</span><span>.</span><span>Length</span><span>);</span><span><br></span><span>}</span><span><br></span><span>}</span><span><br></span><span>}</span></pre>\r\n<pre><span>private</span><span> </span><span>byte</span><span>[]</span><span> </span><span>FileArray</span><span>(</span><span>string</span><span> filename</span><span>)</span><span><br></span><span>{</span><span><br></span><span>FileStream</span><span> fs </span><span>=</span><span> </span><span>new</span><span> </span><span>FileStream</span><span>(</span><span>filename</span><span>,</span><span> </span><span>FileMode</span><span>.</span><span>Open</span><span>,</span><span> </span><span>FileAccess</span><span>.</span><span>Read</span><span>);</span><span><br><br></span><span>// Create a byte array of file stream length</span><span><br></span><span>byte</span><span>[]</span><span> datachunk </span><span>=</span><span> </span><span>new</span><span> </span><span>byte</span><span>[</span><span>fs</span><span>.</span><span>Length</span><span>];</span><span><br><br></span><span>//Read block of bytes from stream into the byte array</span><span><br>fs</span><span>.</span><span>Read</span><span>(</span><span>datachunk</span><span>,</span><span> </span><span>0</span><span>,</span><span> </span><span>System</span><span>.</span><span>Convert</span><span>.</span><span>ToInt32</span><span>(</span><span>fs</span><span>.</span><span>Length</span><span>));</span><span><br><br></span><span>//Close the File Stream</span><span><br>fs</span><span>.</span><span>Close</span><span>();</span><span><br></span><span>return</span><span> datachunk</span><span>;</span><span> </span><span>//return the byte data</span><span><br></span><span>}</span></pre>\r\n<p>variable &lt;fullpath&gt; this string, full path to a Zip file.</p>\r\n<p>and im trying use:</p>\r\n<pre><span>using</span><span> </span><span>(</span><span>var</span><span> stream </span><span>=</span><span> </span><span>new</span><span> </span><span>FileStream</span><span>(</span><span>path</span><span>,</span><span> </span><span>FileMode</span><span>.</span><span>Append</span><span>))</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; </span><span>{</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span>ZipFile</span><span> zipfile </span><span>=</span><span> </span><span>ZipFile</span><span>.</span><span>Read</span><span>(</span><span>path</span><span>);</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span>using</span><span> </span><span>(</span><span>StreamReader</span><span> sr </span><span>=</span><span> </span><span>new</span><span> </span><span>StreamReader</span><span>(</span><span>path</span><span>))</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span>{</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span>var</span><span> zn </span><span>=</span><span> zipfile</span><span>.</span><span>UpdateEntry</span><span>(</span><span>fileName</span><span>,</span><span> bytes</span><span>);</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sr</span><span>.</span><span>Close</span><span>();</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sr</span><span>.</span><span>Dispose</span><span>();</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span>}</span><span><br>&nbsp; &nbsp; &nbsp; &nbsp; </span><span>}</span></pre>\r\n<p>NOT effect, file not update.</p>\r\n<p>Please HELP.<br>\r\n<br>\r\n<br>\r\n</p>\r\n<p>&nbsp;</p>\r\n<p>&nbsp;</p>\r\n</div>\r\n",
    "PostedDate": "2012-04-30T09:39:53.87-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "838309",
    "ThreadId": "354033",
    "Html": "<p>I don't understand.</p>\r\n<p>I don't know what you're asking or how to answer this question.</p>\r\n<p>&nbsp;</p>",
    "PostedDate": "2012-05-18T16:26:18.863-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "893521",
    "ThreadId": "354033",
    "Html": "<p>ok. I want create zip with content many files.</p>\r\n<p>Every file upload over http to the web site and put to the folder, file upload with XHR2 (html5 with chunks)&nbsp;</p>\r\n<p>and so..</p>\r\n<p>my question:</p>\r\n<p>So, upload file - image1.jpg</p>\r\n<p>When upload first chunk (image1.jpg) creating temporary file (tempfile) with file.lenght = chunk.lenght, next</p>\r\n<p>create zip file (allfiles.zip) with content this file (image1.jpg &nbsp;-&nbsp;1 chunk), next</p>\r\n<p>upload next chunk, open&nbsp;allfiles.zip, open&nbsp;image1.jpg and adds the following chunk, update&nbsp;&nbsp;allfiles.zip,&nbsp;and so on until the file (image1.jpg)&nbsp;is fully loaded,&nbsp;</p>\r\n<p>then the next file is loaded.....</p>\r\n<p><strong>How to do this ?????</strong></p>\r\n<p>&nbsp;</p>",
    "PostedDate": "2012-07-31T03:38:12.293-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  }
]