自动下载FTP服务器中的文件

时间:2016-02-09 11:00:36

标签: c# ftp ftp-client

我对C#没有任何了解,但我需要创建一个自动下载文件列表的FTP服务器(从最后到第一个逐个),所以我下载了一些FTP服务器的源代码和我找到的最多功能有一点问题,我的任务是获得一个自动下载文件的服务器,但是我打开一个窗口来选择保存文件的位置。

如何更改它以自动下载文件?

(如果可能,请详细解释您的代码如何工作,这将有助于我更好地理解和学习C#)

private void ServerFileListView_DockChanged(object sender, EventArgs e)
{
    foreach (ListViewItem item in ServerFileListView.Items)
    {
      item.Selected = true;
    }

    byte[] file;

    Server.Download(MachineInfo.GetJustIP(), ServerFileListView.SelectedItems[0].SubItems[2].Text, out file);

    SaveFileDialog save = new SaveFileDialog();
    save.Title = "It saves the downloaded file.";
    save.SupportMultiDottedExtensions = false;
    save.Filter = "*.png|*.png";
    save.FileName = ServerFileListView.SelectedItems[0].SubItems[2].Text;
    if (save.ShowDialog() != System.Windows.Forms.DialogResult.Cancel)
    {
        System.IO.File.WriteAllBytes(save.FileName, file);
        MessageBox.Show(ServerFileListView.SelectedItems[0].SubItems[2].Text +" has been downloaded.", "FTP File Sharing", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
    save.Dispose();
}

如果您想了解更多详情请参阅评论。

(抱歉演讲不好,我的英文不流利)

1 个答案:

答案 0 :(得分:1)

您需要删除SaveFileDialog(),以便以交互方式保存文件。

  • 获取文件列表并放入数组
  • 和循环(foreach)数组运行下载方法
  • 更好的是,在单独的线程或异步中运行该方法,因此它不会阻塞主线程。

伪:

{run in thread

    if(ftp is connected)
    {
       connect;
       string listToDownload[] = getListFileFromServer;
        foreach (var item from listToDownload)
         {file = getFileFromServer;
          saveToDisk(file);
          }
    }
}