下载所有文件夹时获取Web异常包含Windows应用程序中的ftp服务器中的文件c#

时间:2016-11-28 07:46:10

标签: c# download ftp

在我的应用程序中,我有ftp服务器包含一些文件夹,文件夹包含no.of文件,有些是空文件夹,我需要将所有文件夹以及文件下载到我的本地文件夹,如何下载到我的本地文件夹。
我用这个代码直接去catch块 谁能帮我。

     private void Download_Click(object sender, EventArgs e)
        {          
            string[] foldernametogetfiles = GetFileList();          
            foreach (string foldername in foldernames)
            {              
                Download1(foldernametogetfiles);
            }
        }
public string[] GetFileList()
        {
            string[] downloadFiles;
            StringBuilder result = new StringBuilder();
            WebResponse response = null;
            StreamReader reader = null;

            try
            {
                FtpWebRequest request = (FtpWebRequest)WebRequest.Create(url);
                request.UseBinary = true;
                request.Method = WebRequestMethods.Ftp.ListDirectory;
                request.Credentials = new NetworkCredential(ftpUserName, ftpPassWord);
                request.KeepAlive = false;
                request.UsePassive = false;
                response = request.GetResponse();
                reader = new StreamReader(response.GetResponseStream());
                string line = reader.ReadLine();
                while (line != null)
                {
                    result.Append(line);
                    result.Append("\n");
                    line = reader.ReadLine();
                }
                result.Remove(result.ToString().LastIndexOf('\n'), 1);
                return result.ToString().Split('\n');
            }
            catch (Exception ex)
            {
                if (reader != null)
                {
                    reader.Close();
                }
                if (response != null)
                {
                    response.Close();
                }
                downloadFiles = null;
                return downloadFiles;
            }
        }
private void Download1(string foldernametogetfiles)
        {
            try
            {
                string uri = url + "/" + foldernametogetfiles;
                Uri serverUri = new Uri(uri);
                if (serverUri.Scheme != Uri.UriSchemeFtp)
                {
                    return;
                }
                FtpWebRequest request = (FtpWebRequest)WebRequest.Create(url + "/" + foldernametogetfiles);             
                request.UseBinary = true;
                request.Method = WebRequestMethods.Ftp.DownloadFile;
                request.Credentials = new NetworkCredential(ftpUserName, ftpPassWord);
                request.KeepAlive = false;
                request.UsePassive = false;
                FtpWebResponse response = (FtpWebResponse)request.GetResponse(); //when i debug it will come upto here directly go to catch block
                //string[] array1 = Directory.GetFiles(url);
                Stream responseStream = response.GetResponseStream();
                FileStream writeStream = new FileStream(localDestnDir + "\\" + foldernametogetfiles, FileMode.Create);
                int Length = 2048;
                Byte[] buffer = new Byte[Length];
                int bytesRead = responseStream.Read(buffer, 0, Length);
                while (bytesRead > 0)
                {
                    writeStream.Write(buffer, 0, bytesRead);
                    bytesRead = responseStream.Read(buffer, 0, Length);
                }
                writeStream.Close();
                response.Close();
            }
            catch (WebException wEx)
            {
                MessageBox.Show(wEx.Message, "Download Error");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Download Error");
            }
        }

enter image description here

谢谢

0 个答案:

没有答案