/// <summary> /// 点击 下载 选项之后弹出文件选择对话框选择保存位置和文件重命名 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void StartDownLoadMenuItemWork(object sender, RoutedEventArgs e) { FileInfo fi = FTPListView.SelectedItem as FileInfo; downloadFileName = fi.FileName; downloadFileSize = fi.FileSize.Split(' ')[0]; SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "所有文件(*.*)|*.*"; sfd.FileName = sfd.FileName + downloadFileName; DialogResult dr = sfd.ShowDialog(); if (dr == System.Windows.Forms.DialogResult.OK) { localFileName = System.IO.Path.GetFileName(sfd.FileName); downloadFileFolder = System.IO.Path.GetDirectoryName(sfd.FileName); try { string totalSize; long total = 0L; string remotePath = FTPLogin.ftp.showCurrentDir(); FTPLogin.ftp.chDir(remotePath + "/" + downloadFileName); string[] currentFileList = FTPLogin.ftp.Dir(""); foreach (string item in currentFileList) { if (item.Equals("")) { continue; } string tempFileName = item.Substring(0, item.Length - 1); total += FTPLogin.ftp.GetFileSize(tempFileName) / 1024; } totalSize = string.Format("{0:N0}", total); downloadFileSize = totalSize; downloadTask = new DownLoadTaskDescribe(downloadFileName, downloadFileSize, downloadFileFolder, ""); downloadWorker.RunWorkerAsync("multi file"); cancelBtn.IsEnabled = true; //SolidColorBrush sc = new SolidColorBrush(); //sc.Color = Color.FromRgb(0x36, 0xBA, 0xFE); //cancelBtn.Background = sc; } catch (Exception) { downloadTask = new DownLoadTaskDescribe(downloadFileName, downloadFileSize, downloadFileFolder, localFileName); downloadWorker.RunWorkerAsync("single file"); cancelBtn.IsEnabled = true; //SolidColorBrush sc = new SolidColorBrush(); //sc.Color = Color.FromRgb(0x36, 0xBA, 0xFE); //cancelBtn.Background = sc; } } }
/// <summary> /// 具体的下载方法 /// </summary> /// <param name="worker"></param> /// <param name="e"></param> /// <param name="task"></param> /// <returns></returns> private bool DownloadWork(BackgroundWorker worker, DoWorkEventArgs e, DownLoadTaskDescribe task) { if (e.Argument.Equals("single file")) { return(FTPLogin.ftp.DownLoadSingleFile(task.DownloadFileName, task.LocalFileFolder, task.LocalFileName, task.DownloadFileSize, worker, e)); } else if (e.Argument.Equals("multi file")) { //FTPLogin.ftp.Get("", task.LocalFileFolder, task.DownloadFileSize, worker, e); return(true); } else { //.PutSingleFile(task.DownloadFileName, worker, e); return(true); } //return FTPLogin.ftp.DownLoadSingleFile(task.DownloadFileName, task.LocalFileFolder, task.LocalFileName,task.DownloadFileSize,worker,e ); }