Example #1
0
        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 = "完成";
            }
        }
Example #2
0
        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 = "完成";
            }
        }
Example #3
0
        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 = "";
            }
        }
Example #4
0
        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);
                }
            }
        }
Example #5
0
        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);
                }
            }
        }
Example #6
0
        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);
                }
            }
        }
Example #7
0
        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);
                }
            }
        }
Example #8
0
        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 = "";
            }
        }