[
  {
    "Id": "546556",
    "ThreadId": "241117",
    "Html": "\r\n<p>Hi I am trying to save a .zip file from the FTP server (Compressed and send their by me using DotNetZip) but whenever the file is saved it saves it as 0kb, the file is supposed to be 287kb</p>\r\n<p>I have tested this on my local Machine and it works</p>\r\n<p>Here is the code for the compress and upload</p>\r\n<p><span style=\"color:blue\">private</span> <span style=\"color:blue\">void</span> btnExportTestData_Click(<span style=\"color:blue\">object</span> sender, EventArgs e)<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(<span style=\"color:#a31515\">&quot;Busy Uploading...&quot;</span>);<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XmlDocument data =\r\n<span style=\"color:blue\">new</span> XmlDocument();<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataRow rowData = TestData().Rows[0];<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data.LoadXml(rowData[0].ToString());<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data.Save(<span style=\"color:#a31515\">&quot;C:/PATH/VCI_TestDataMB.xml&quot;</span>);<br>\r\n<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ZipDocument(<span style=\"color:#a31515\">&quot;C:/PATH/VCI_TestDataMB.xml&quot;</span>,\r\n<span style=\"color:#a31515\">&quot;C:/PATH/VCI_TestDataMB.zip&quot;</span>);<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ExportToFTP(<span style=\"color:#a31515\">&quot;C:/PATH/VCI_TestDataMB.zip&quot;</span>,\r\n<span style=\"color:#a31515\">&quot;/FOLDER/PATH/VCI_TestDataMB.zip&quot;</span>);<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>\r\n<br>\r\n<span style=\"color:blue\">private</span> <span style=\"color:blue\">void</span> ExportToFTP(<span style=\"color:blue\">string</span> sFileName,\r\n<span style=\"color:blue\">string</span> sSaveAs)<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style=\"color:blue\">\r\nstring</span> sAdress = <span style=\"color:#a31515\"><a href=\"ftp://adress/\">ftp://ADRESS</a></span>;<br>\r\n<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FtpWebRequest request = (FtpWebRequest)WebRequest.Create(sAdress &#43; sSaveAs);<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; request.Method = WebRequestMethods.Ftp.UploadFile;<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; request.Credentials =\r\n<span style=\"color:blue\">new</span> NetworkCredential(<span style=\"color:#a31515\">&quot;USERNAME&quot;</span>,\r\n<span style=\"color:#a31515\">&quot;PASSWORD&quot;</span>);<br>\r\n<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Stream ftpStream = request.GetRequestStream();<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileStream file = File.OpenRead(sFileName);<br>\r\n<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style=\"color:blue\">\r\nint</span> length = 1024;<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style=\"color:blue\">\r\nbyte</span>[] buffer = <span style=\"color:blue\">new</span> <span style=\"color:blue\">\r\nbyte</span>[length];<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style=\"color:blue\">\r\nint</span> bytesRead = 0;<br>\r\n<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style=\"color:blue\">\r\ndo</span><br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bytesRead = file.Read(buffer, 0, length);<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ftpStream.Write(buffer,0,bytesRead);<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <span style=\"color:blue\">\r\nwhile</span> (bytesRead != 0);<br>\r\n<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file.Close();<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ftpStream.Close();<br>\r\n<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(<span style=\"color:#a31515\">&quot;Upload Complete!&quot;</span>);<br>\r\n<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>\r\n<p>and here is the code for the download, unzip and save</p>\r\n<div style=\"color:black; background-color:white\">\r\n<pre>        <span style=\"color:blue\">private</span> <span style=\"color:blue\">void</span> ImportTestXML()\r\n        {\r\n            <span style=\"color:blue\">string</span> sAdress = <span style=\"color:#a31515\"><a href=\"ftp://ADRESS\">ftp://ADRESS</a></span>;\r\n\r\n            FtpWebRequest request = (FtpWebRequest) WebRequest.Create(sAdress &#43; <span style=\"color:#a31515\">&quot;/FOLDER/PATH/VCI_TestDataMB.zip&quot;</span>);\r\n            <span style=\"color:green\">//request.UseBinary = true;</span>\r\n            request.Method = WebRequestMethods.Ftp.DownloadFile;\r\n\r\n            <span style=\"color:green\">// This example assumes the FTP site uses anonymous logon.</span>\r\n            request.Credentials = <span style=\"color:blue\">new</span> NetworkCredential(<span style=\"color:#a31515\">&quot;USENRAME&quot;</span>, <span style=\"color:#a31515\">&quot;PASSWORD&quot;</span>);\r\n\r\n            FtpWebResponse response = (FtpWebResponse)request.GetResponse();\r\n\r\n            Stream responseStream = response.GetResponseStream();\r\n            FileStream FileS = File.OpenWrite(<span style=\"color:#a31515\">&quot;C:/PATH/VCI_TestDataMB.zip&quot;</span>);\r\n            StreamReader reader = <span style=\"color:blue\">new</span> StreamReader(responseStream);\r\n\r\n            FileS.Write(StrToByteArray(reader.ReadToEnd()),0,0);\r\n            FileS.Close();\r\n\r\n            UnZipCocument(<span style=\"color:#a31515\">&quot;C:/PATH/VCI_TestDataMB.zip&quot;</span>, <span style=\"color:#a31515\">&quot;C:/PATH&quot;</span>);\r\n\r\n            reader.Close();\r\n            response.Close();  \r\n        }\r\n</pre>\r\n</div>\r\n<p>Oh yes, it is a WinApp.</p>\r\n<p>&nbsp;</p>\r\n<p>Any ideas why it would do that</p>\r\n",
    "PostedDate": "2011-01-10T03:00:20.123-08:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "546620",
    "ThreadId": "241117",
    "Html": "\r\n<p>Hi</p>\r\n<p>Don't just close streams, wrap them in using clauses or if you must call dispose directly. Always check whether objects implements IDisposable. You must always either wrap them in using clauses or call Dispose when you're done with them. You might have been\r\n lucky that it worked on your machine.</p>\r\n<div style=\"color:black; background-color:white\">\r\n<pre><span style=\"color:blue\">private</span> <span style=\"color:blue\">void</span> ExportToFTP(<span style=\"color:blue\">string</span> sFileName, <span style=\"color:blue\">string</span> sSaveAs)\r\n{\r\n    <span style=\"color:blue\">string</span> sAdress = ftp: <span style=\"color:green\">//ADRESS;</span>\r\n\r\n    FtpWebRequest request = (FtpWebRequest) WebRequest.Create(sAdress &#43; sSaveAs);\r\n    request.Method = WebRequestMethods.Ftp.UploadFile;\r\n    request.Credentials = <span style=\"color:blue\">new</span> NetworkCredential(<span style=\"color:#a31515\">&quot;USERNAME&quot;</span>, <span style=\"color:#a31515\">&quot;PASSWORD&quot;</span>);\r\n\r\n    <span style=\"color:blue\">using</span> (Stream ftpStream = request.GetRequestStream())\r\n    {\r\n        <span style=\"color:blue\">using</span> (FileStream file = File.OpenRead(sFileName))\r\n        {\r\n\r\n            <span style=\"color:blue\">int</span> length = 1024;\r\n            <span style=\"color:blue\">byte</span>[] buffer = <span style=\"color:blue\">new</span> <span style=\"color:blue\">byte</span>[length];\r\n            <span style=\"color:blue\">int</span> bytesRead = 0;\r\n\r\n            <span style=\"color:blue\">do</span>\r\n            {\r\n                bytesRead = file.Read(buffer, 0, length);\r\n                ftpStream.Write(buffer, 0, bytesRead);\r\n            } <span style=\"color:blue\">while</span> (bytesRead != 0);\r\n\r\n            file.Close();\r\n        }\r\n        ftpStream.Close();\r\n    }\r\n\r\n    MessageBox.Show(<span style=\"color:#a31515\">&quot;Upload Complete!&quot;</span>);\r\n}\r\n</pre>\r\n</div>\r\n<p>Remember to do the same to ImportTestXML:</p>\r\n<p>&nbsp;</p>\r\n<div style=\"color:black; background-color:white\">\r\n<pre><span style=\"color:blue\">private</span> <span style=\"color:blue\">void</span> ImportTestXML()\r\n{\r\n    <span style=\"color:blue\">string</span> sAdress = ftp:<span style=\"color:green\">//ADRESS;</span>\r\n\r\n    FtpWebRequest request = (FtpWebRequest) WebRequest.Create(sAdress &#43; <span style=\"color:#a31515\">&quot;/FOLDER/PATH/VCI_TestDataMB.zip&quot;</span>);\r\n    <span style=\"color:green\">//request.UseBinary = true;</span>\r\n    request.Method = WebRequestMethods.Ftp.DownloadFile;\r\n\r\n    <span style=\"color:green\">// This example assumes the FTP site uses anonymous logon.</span>\r\n    request.Credentials = <span style=\"color:blue\">new</span> NetworkCredential(<span style=\"color:#a31515\">&quot;USENRAME&quot;</span>, <span style=\"color:#a31515\">&quot;PASSWORD&quot;</span>);\r\n\r\n    <span style=\"color:blue\">using</span>(FtpWebResponse response = (FtpWebResponse)request.GetResponse())\r\n    {\r\n        <span style=\"color:blue\">using</span>(Stream responseStream = response.GetResponseStream())\r\n        {\r\n            <span style=\"color:blue\">using</span>(StreamReader reader = <span style=\"color:blue\">new</span> StreamReader(responseStream))\r\n            {\r\n                <span style=\"color:blue\">using</span> (FileStream FileS = File.OpenWrite(<span style=\"color:#a31515\">&quot;C:/PATH/VCI_TestDataMB.zip&quot;</span>))\r\n                {\r\n                    FileS.Write(StrToByteArray(reader.ReadToEnd()), 0, 0);\r\n                    FileS.Close();\r\n                }\r\n\r\n                UnZipCocument(<span style=\"color:#a31515\">&quot;C:/PATH/VCI_TestDataMB.zip&quot;</span>, <span style=\"color:#a31515\">&quot;C:/PATH&quot;</span>);\r\n                reader.Close();\r\n            }\r\n        }\r\n        response.Close();\r\n    }\r\n}\r\n</pre>\r\n</div>\r\n<p>&nbsp;</p>\r\n<p>&nbsp;</p>\r\n",
    "PostedDate": "2011-01-10T05:23:25.603-08:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "546668",
    "ThreadId": "241117",
    "Html": "\r\n<div style=\"color:black; background-color:white\">Hi CZietsman thanks for the help, I changed my code as per your example and still the same happens.</div>\r\n<p>I have reason to believe that the problem may be in the following line in my ImportTestXML()</p>\r\n<pre>FileS.Write(StrToByteArray(reader.ReadToEnd()), 0, 0);\r\n</pre>\r\n<p>The 0kb file is the one created with</p>\r\n<p><span style=\"color:blue\">&nbsp; using</span> (FileStream FileS = File.OpenWrite(<span style=\"color:#a31515\">&quot;C:/PATH/VCI_TestDataMB.zip&quot;</span>))</p>\r\n<p>but the program gets an error while trying to Write the file to the FileStream.</p>\r\n<p>I do not have MS Visual Studio on the Production server where the app is running so I am unable to debug the code.</p>\r\n<p>File.OpenWrite takes 3 Parameters</p>\r\n<p>1. byte[] buffer<br>\r\n2. int offset<br>\r\n3. int count</p>\r\n<p>StrToByteArray() looks as follow</p>\r\n<div style=\"color:black; background-color:white\">\r\n<pre>        <span style=\"color:blue\">public</span> <span style=\"color:blue\">static</span> <span style=\"color:blue\">byte</span>[] StrToByteArray(<span style=\"color:blue\">string</span> str)\r\n        {\r\n            <span style=\"color:blue\">return</span> Encoding.ASCII.GetBytes(str);\r\n        }\r\n</pre>\r\n<pre>Any futher advise?</pre>\r\n</div>\r\n",
    "PostedDate": "2011-01-10T06:10:19.31-08:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "547228",
    "ThreadId": "241117",
    "Html": "\r\n<p>I don't think you want to use StreamReader here, since zip files are binary. I'm guessing that the reader is terminating early because of this. You'll probably have to uncomment &quot;request.UseBinary = true;&quot;.</p>\r\n<p>Try pumping the response stream manually using something like:</p>\r\n<p></p>\r\n<div style=\"color:black; background-color:white\">\r\n<pre><span style=\"color:blue\">using</span> (<span style=\"color:blue\">var</span> responseStream = response.GetResponseStream())\r\n{\r\n    <span style=\"color:blue\">using</span> (<span style=\"color:blue\">var</span> fileStream = File.OpenWrite(<span style=\"color:#a31515\">&quot;C:/PATH/VCI_TestDataMB.zip&quot;</span>))\r\n    {\r\n        <span style=\"color:blue\">int</span> b;\r\n        <span style=\"color:blue\">while</span>((b = responseStream.ReadByte()) != -1)\r\n        {                            \r\n            fileStream.WriteByte((<span style=\"color:blue\">byte</span>) b);\r\n        }\r\n    }\r\n}\r\n</pre>\r\n</div>\r\nThis might not be the best solution, but at least it'll help with isolating your problem. I don't think it is a problem with DotNetZip.\r\n<p></p>\r\n",
    "PostedDate": "2011-01-11T03:52:07.953-08:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  }
]