2011-06-13 31 views
4

我遇到了问题,问题是我可以下载ftp文件,但是我下载的文件没有恢复设备和多部分文件下载,因为有超过500个大文件MB的文件我无法汽车无下载文件,因为我被切断,并开始从开始下载我想我的代码恢复工具,如果它得到断开如何使用自动恢复功能下载ftp文件

我使用的代码是

public string[] GetFileList() 
    { 
     string[] downloadFiles; 
     StringBuilder result = new StringBuilder(); 
     FtpWebRequest reqFTP; 
     try 
     { 
      reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/")); 
      reqFTP.UseBinary = true; 
      reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword); 
      reqFTP.Method = WebRequestMethods.Ftp.ListDirectory; 
      WebResponse response = reqFTP.GetResponse(); 
      StreamReader reader = new StreamReader(response.GetResponseStream()); 
      //MessageBox.Show(reader.ReadToEnd()); 
      string line = reader.ReadLine(); 
      while (line != null) 
      { 
       result.Append(line); 
       result.Append("\n"); 
       line = reader.ReadLine(); 
      } 
      result.Remove(result.ToString().LastIndexOf('\n'), 1); 
      reader.Close(); 
      response.Close(); 
      //MessageBox.Show(response.StatusDescription); 
      return result.ToString().Split('\n'); 
     } 
     catch (Exception ex) 
     { 
      System.Windows.Forms.MessageBox.Show(ex.Message); 
      downloadFiles = null; 
      return downloadFiles; 
     } 
    } 


    private void Download(string filePath, string fileName) 
    { 
     FtpWebRequest reqFTP; 
     try 
     { 
      //filePath = <<The full path where the file is to be created.>>, 
      //fileName = <<Name of the file to be created(Need not be the name of the file on FTP server).>> 
      FileStream outputStream = new FileStream(filePath + "\\" + fileName, FileMode.Create); 

      reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/" + fileName)); 
      reqFTP.Method = WebRequestMethods.Ftp.DownloadFile; 
      reqFTP.UseBinary = true; 
      reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword); 
      FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse(); 
      Stream ftpStream = response.GetResponseStream(); 
      long cl = response.ContentLength; 
      int bufferSize = 2048; 
      int readCount; 
      byte[] buffer = new byte[bufferSize]; 

      readCount = ftpStream.Read(buffer, 0, bufferSize); 
      while (readCount > 0) 
      { 
       outputStream.Write(buffer, 0, readCount); 
       readCount = ftpStream.Read(buffer, 0, bufferSize); 
      } 

      ftpStream.Close(); 
      outputStream.Close(); 
      response.Close(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 

私人无效btnDownload_Click(对象发送者,EventArgs e) {

 FolderBrowserDialog fldDlg = new FolderBrowserDialog(); 
     if (txtUpload.Text.Trim().Length > 0) 
     { 
      if (fldDlg.ShowDialog() == DialogResult.OK) 
      { 
       Download(fldDlg.SelectedPath, txtUpload.Text.Trim()); 
      } 
     } 
     else 
     { 
      MessageBox.Show("Please enter the File name to download"); 
     } 
    } 

我想在我的代码恢复设施,

你开始下载检查是否存在之前,会有一个很大的升值,如果有人可以帮助我,

在此先感谢

回答

6

本地文件系统上的文件。如果存在,则获取大小并将其用于FtpWebRequest对象的ContentOffset成员。不过,FTP服务器可能不支持该功能。

+0

它有一个简历设施 – 2011-06-13 13:46:36

+2

这是你需要回答的问题:) – 2011-06-13 13:54:09