private void OnFileUploadFinished(object sender, TransferEventArgs e) { if (this.InvokeRequired) { this.Invoke((Action)delegate { OnFileUploadFinished(sender, e); }, null); return; } Console.WriteLine("file upload finished: " + e); var item = listViewUpload.Items.Find(e.Key, false); if (item.Length > 0) { item[0].SubItems[3].Text = "完成"; } }
private void OnFileUploadFinished(object sender, TransferEventArgs e) { if (this.InvokeRequired) { this.Invoke((Action) delegate { OnFileUploadFinished(sender, e); }, null); return; } Console.WriteLine("file upload finished: " + e); var item = listViewUpload.Items.Find(e.Key, false); if (item.Length > 0) { item[0].SubItems[3].Text = "完成"; } }
private void OnFileDownloadBegin(object sender, TransferEventArgs e) { if (this.InvokeRequired) { this.Invoke((Action) delegate { OnFileDownloadBegin(sender, e); }, null); return; } Console.WriteLine("file Download begin: " + e); var items = listViewDownload.Items.Find(e.Key, false); if (items.Length == 0) { var item = new ListViewItem(new[] { e.LocalPath, e.ServerPath, e.SizeString, "" }); item.Name = e.Key; listViewDownload.Items.Add(item); } else { items[0].SubItems[2].Text = e.SizeString; items[0].SubItems[3].Text = ""; } }
private void DownloadThread(Object stateInfo) { var task = (DownloadTask)stateInfo; FtpWebRequest reqFTP; string uri; if (task.RemoteDir.Length == 0) { uri = "ftp://" + ftpHost + "/" + task.FileName; } else { uri = "ftp://" + ftpHost + "/" + task.RemoteDir + task.FileName; } long size = GetFileSize(task.FileName, ftpHost, ftpUserName, ftpPassword, task.RemoteDir); long startbye = 0; var localPath = task.LocalDir + "\\" + task.FileName; var remotePath = task.RemoteDir + "\\" + task.FileName; var transferEventArgs = new TransferEventArgs(localPath, remotePath, size); try { if (FileDownloadBegin != null) { FileDownloadBegin(this, transferEventArgs); } reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri)); reqFTP.Method = WebRequestMethods.Ftp.DownloadFile; reqFTP.UseBinary = true; reqFTP.Credentials = new NetworkCredential(ftpUserName, ftpPassword); reqFTP.Proxy = null; reqFTP.KeepAlive = true; FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse(); Stream ftpStream = response.GetResponseStream(); int bufferSize = 1024 * 1024; int readCount; byte[] buffer = new byte[bufferSize]; readCount = ftpStream.Read(buffer, 0, bufferSize); FileStream outputStream = new FileStream(task.LocalDir + "\\" + task.FileName, FileMode.Create); while (readCount > 0) { outputStream.Write(buffer, 0, readCount); readCount = ftpStream.Read(buffer, 0, bufferSize); startbye += readCount; //pb.Value = (int)(startbye / 1024 + 1); if (FileDownloadPorgress != null) { FileDownloadPorgress(this, new TransferProgressEventArgs(localPath, remotePath, size, startbye)); } } ftpStream.Close(); outputStream.Close(); response.Close(); if (FileDownloadFinished != null) { FileDownloadFinished(this, transferEventArgs); } } catch (System.NotSupportedException) { if (FileDownloadFailed != null) { FileDownloadFailed(this, transferEventArgs); } } catch (Exception) { if (FileDownloadFailed != null) { FileDownloadFailed(this, transferEventArgs); } } }
private void UploadThread(Object stateInfo) { // No state object was passed to QueueUserWorkItem, so // stateInfo is null. var task = (UploadTask)stateInfo; if (task.RemoteDir == null) { task.RemoteDir = ""; } FileInfo fileInf = new FileInfo(task.FileName); var transferEventArgs = new TransferEventArgs(task.FileName, task.RemoteDir, fileInf.Length); if (FileUploadBegin != null) { FileUploadBegin(this, transferEventArgs); } int allbye = (int)(fileInf.Length / 1024 + 1); string newFileName; if (fileInf.Name.IndexOf("#") == -1) { newFileName = QCKG(fileInf.Name); } else { newFileName = fileInf.Name.Replace("#", "#"); newFileName = QCKG(newFileName); } string uri; if (task.RemoteDir.Length == 0) { uri = "ftp://" + ftpHost + "/" + newFileName; } else { uri = "ftp://" + ftpHost + "/" + task.RemoteDir + "/" + newFileName; } FtpWebRequest reqFTP; // 根据uri创建FtpWebRequest对象 reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri)); reqFTP.Proxy = null; reqFTP.KeepAlive = true; // ftp用户名和密码 reqFTP.Credentials = new NetworkCredential(ftpUserName, ftpPassword); // 默认为true,连接不会被关闭 // 在一个命令之后被执行 reqFTP.KeepAlive = false; // 指定执行什么命令 reqFTP.Method = WebRequestMethods.Ftp.UploadFile; // 指定数据传输类型 reqFTP.UseBinary = true; // 上传文件时通知服务器文件的大小 reqFTP.ContentLength = fileInf.Length; //int buffLength = 2048;// 缓冲大小设置为2kb int buffLength = 1024 * 1024; byte[] buff = new byte[buffLength]; // 打开一个文件流 (System.IO.FileStream) 去读上传的文件 FileStream fs = fileInf.OpenRead(); try { long startbye = 0; // 把上传的文件写入流 Stream strm = reqFTP.GetRequestStream(); // 每次读文件流的2kb int contentLen = fs.Read(buff, 0, buffLength); // 流内容没有结束 while (contentLen != 0) { // 把内容从file stream 写入 upload stream strm.Write(buff, 0, contentLen); contentLen = fs.Read(buff, 0, buffLength); startbye += contentLen; //pb.Value = (int)(startbye / 1024 + 1); if (FileUploadPorgress != null) { FileUploadPorgress(this, new TransferProgressEventArgs(task.FileName, task.RemoteDir, fileInf.Length, startbye)); } } // 关闭两个流 strm.Close(); fs.Close(); if (FileUploadFinished != null) { FileUploadFinished(this, transferEventArgs); } } catch (Exception e) { if (FileUploadFailed != null) { FileUploadFailed(this, transferEventArgs); } } }
private void DownloadThread(Object stateInfo) { var task = (DownloadTask)stateInfo; FtpWebRequest reqFTP; string uri; if (task.RemoteDir.Length == 0) uri = "ftp://" + ftpHost + "/" + task.FileName; else uri = "ftp://" + ftpHost + "/" + task.RemoteDir + task.FileName; long size = GetFileSize(task.FileName, ftpHost, ftpUserName, ftpPassword, task.RemoteDir); long startbye = 0; var localPath = task.LocalDir + "\\" + task.FileName; var remotePath = task.RemoteDir + "\\" + task.FileName; var transferEventArgs = new TransferEventArgs(localPath, remotePath, size); try { if (FileDownloadBegin != null) { FileDownloadBegin(this, transferEventArgs); } reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri)); reqFTP.Method = WebRequestMethods.Ftp.DownloadFile; reqFTP.UseBinary = true; reqFTP.Credentials = new NetworkCredential(ftpUserName, ftpPassword); reqFTP.Proxy = null; reqFTP.KeepAlive = true; FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse(); Stream ftpStream = response.GetResponseStream(); int bufferSize = 1024 * 1024; int readCount; byte[] buffer = new byte[bufferSize]; readCount = ftpStream.Read(buffer, 0, bufferSize); FileStream outputStream = new FileStream(task.LocalDir + "\\" + task.FileName, FileMode.Create); while (readCount > 0) { outputStream.Write(buffer, 0, readCount); readCount = ftpStream.Read(buffer, 0, bufferSize); startbye += readCount; //pb.Value = (int)(startbye / 1024 + 1); if (FileDownloadPorgress != null) { FileDownloadPorgress(this, new TransferProgressEventArgs(localPath, remotePath, size, startbye)); } } ftpStream.Close(); outputStream.Close(); response.Close(); if (FileDownloadFinished != null) { FileDownloadFinished(this, transferEventArgs); } } catch (System.NotSupportedException) { if (FileDownloadFailed != null) { FileDownloadFailed(this, transferEventArgs); } } catch (Exception) { if (FileDownloadFailed != null) { FileDownloadFailed(this, transferEventArgs); } } }
private void UploadThread(Object stateInfo) { // No state object was passed to QueueUserWorkItem, so // stateInfo is null. var task = (UploadTask)stateInfo; if (task.RemoteDir == null) task.RemoteDir = ""; FileInfo fileInf = new FileInfo(task.FileName); var transferEventArgs = new TransferEventArgs(task.FileName, task.RemoteDir, fileInf.Length); if (FileUploadBegin != null) { FileUploadBegin(this, transferEventArgs); } int allbye = (int)(fileInf.Length / 1024 + 1); string newFileName; if (fileInf.Name.IndexOf("#") == -1) { newFileName = QCKG(fileInf.Name); } else { newFileName = fileInf.Name.Replace("#", "#"); newFileName = QCKG(newFileName); } string uri; if (task.RemoteDir.Length == 0) uri = "ftp://" + ftpHost + "/" + newFileName; else uri = "ftp://" + ftpHost + "/" + task.RemoteDir + "/" + newFileName; FtpWebRequest reqFTP; // 根据uri创建FtpWebRequest对象 reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri)); reqFTP.Proxy = null; reqFTP.KeepAlive = true; // ftp用户名和密码 reqFTP.Credentials = new NetworkCredential(ftpUserName, ftpPassword); // 默认为true,连接不会被关闭 // 在一个命令之后被执行 reqFTP.KeepAlive = false; // 指定执行什么命令 reqFTP.Method = WebRequestMethods.Ftp.UploadFile; // 指定数据传输类型 reqFTP.UseBinary = true; // 上传文件时通知服务器文件的大小 reqFTP.ContentLength = fileInf.Length; //int buffLength = 2048;// 缓冲大小设置为2kb int buffLength = 1024 * 1024; byte[] buff = new byte[buffLength]; // 打开一个文件流 (System.IO.FileStream) 去读上传的文件 FileStream fs = fileInf.OpenRead(); try { long startbye = 0; // 把上传的文件写入流 Stream strm = reqFTP.GetRequestStream(); // 每次读文件流的2kb int contentLen = fs.Read(buff, 0, buffLength); // 流内容没有结束 while (contentLen != 0) { // 把内容从file stream 写入 upload stream strm.Write(buff, 0, contentLen); contentLen = fs.Read(buff, 0, buffLength); startbye += contentLen; //pb.Value = (int)(startbye / 1024 + 1); if (FileUploadPorgress != null) { FileUploadPorgress(this, new TransferProgressEventArgs(task.FileName, task.RemoteDir, fileInf.Length, startbye)); } } // 关闭两个流 strm.Close(); fs.Close(); if(FileUploadFinished !=null) { FileUploadFinished(this, transferEventArgs); } } catch(Exception e) { if(FileUploadFailed !=null) { FileUploadFailed(this, transferEventArgs); } } }
private void OnFileDownloadBegin(object sender, TransferEventArgs e) { if (this.InvokeRequired) { this.Invoke((Action)delegate { OnFileDownloadBegin(sender, e); }, null); return; } Console.WriteLine("file Download begin: " + e); var items = listViewDownload.Items.Find(e.Key, false); if (items.Length == 0) { var item = new ListViewItem(new[] { e.LocalPath, e.ServerPath, e.SizeString, "" }); item.Name = e.Key; listViewDownload.Items.Add(item); } else { items[0].SubItems[2].Text = e.SizeString; items[0].SubItems[3].Text = ""; } }