public static void StartFTPDownload(string uri, string username, string password, string path, string filename, bool isFugai) { Thread thread = new Thread(new ParameterizedThreadStart(Ftpdownloadfile)); if (!isFugai) { int i = 0; string pathfile = Path.Combine(path, filename); while (File.Exists(pathfile)) { filename = "(" + i + ")" + filename; pathfile = Path.Combine(path, filename); i++; } } DownloadJobInfo dji = new DownloadJobInfo { uri = new Uri(uri), path = path, filename = filename, dt = DownloadType.FTP, isFugai = isFugai, username = username, password = password, Length = GetFTPFileLength(new Uri(uri), username, password) }; thread.Name = dji.ToString(); DownloadPercent.Add(dji, 0); Jobs.Add(thread); thread.Start(dji); }
public DownloadJobInfo copyNew(DownloadJobInfo ddd) { DownloadJobInfo dji = new DownloadJobInfo { uri = ddd.uri, path = ddd.path, filename = ddd.filename, username = ddd.username, password = ddd.password, isFugai = ddd.isFugai, dt = ddd.dt }; return(dji); }
public static void StartHttpDownload(Uri uri, string path, string filename, bool isFugai) { Thread thread = new Thread(new ParameterizedThreadStart(StartThreadHttp)); DownloadJobInfo dji = new DownloadJobInfo { uri = uri, path = path, filename = filename, dt = DownloadType.HTTP, isFugai = isFugai }; thread.Name = dji.ToString(); DownloadPercent.Add(dji, 0); Jobs.Add(thread); thread.Start(dji); }
private static void Ftpdownloadfile(object djiobj) { long filelength = 0; DownloadJobInfo dji = (DownloadJobInfo)djiobj; FtpWebRequest request = (FtpWebRequest)WebRequest.Create(dji.uri); filelength = dji.Length; try { request.Method = WebRequestMethods.Ftp.DownloadFile; request.Credentials = new NetworkCredential(dji.username, dji.password); dji.Status = "下载中..."; using (FtpWebResponse response = (FtpWebResponse)request.GetResponse()) { using (Stream responseStream = response.GetResponseStream()) { using (FileStream fs = new FileStream(Path.Combine(dji.path, dji.filename), FileMode.OpenOrCreate)) { byte[] buffer = new byte[102400]; int read = 0; int allready = 0; do { read = responseStream.Read(buffer, 0, buffer.Length); fs.Write(buffer, 0, read); fs.Flush(); allready += read; DownloadPercent[dji] = int.Parse((long.Parse(allready.ToString()) / filelength * 100).ToString()); } while (!(read == 0)); fs.Flush(); fs.Close(); } } } dji.Status = "已完成!"; } catch (Exception ex) { dji.Status = "出现错误:" + ex.Message; } }
private static void StartThreadHttp(object obj) { DownloadJobInfo dji = (DownloadJobInfo)obj; WebClient wc = new WebClient(); wc.DownloadProgressChanged += new DownloadProgressChangedEventHandler(wc_DownloadProgressChanged); wc.DownloadFileCompleted += new AsyncCompletedEventHandler(wc_DownloadFileCompleted); wc.Proxy = WebRequest.DefaultWebProxy; WC_DJI_Map.Add(wc, dji); wc.DownloadFileAsync(dji.uri, Path.Combine(dji.path, dji.filename)); while (WC_DJI_Map.ContainsKey(wc)) { Thread.Sleep(new TimeSpan(0, 0, 5)); } if (Jobs.SingleOrDefault(m => m.Name == dji.ToString()) != null) { Jobs.Remove(Jobs.SingleOrDefault(m => m.Name == dji.ToString())); } GC.Collect(); return; }
public static int GetFileDownloadPercent(DownloadJobInfo dji) { return(DownloadPercent.SingleOrDefault(m => m.Key.filename == dji.filename && m.Key.path == dji.path && m.Key.uri.ToString() == dji.uri.ToString()).Value); }