/// <summary> /// 上传文件 /// </summary> /// <param name="ftpAddress"></param> /// <param name="remoteFilename"></param> /// <param name="localFilename"></param> /// <param name="resumeOperation"></param> public bool UploadFile(string ftpAddress, string localFilename, string remoteFilename, bool resumeOperation) { FtpSiteData siteData = ParseFtpAddress(ftpAddress); if (siteData == null) { throw new ArgumentException("Invalid ftp address format!"); } using (FtpConnection connection = new FtpConnection(siteData.Host, siteData.Port, siteData.UserName, siteData.Password)) { SetConnection(connection); AbstractFolder remoteFolder = new FtpFolder(connection); AbstractFile remoteFile = remoteFolder.GetFile(remoteFilename); AbstractFile localFile = new DiskFile(localFilename); if (!resumeOperation || !remoteFile.Exists || remoteFile.Size > localFile.Size) { localFile.CopyTo(remoteFile, true); } else if (remoteFile.Size == localFile.Size) { return(true); } else if (remoteFile.Size < localFile.Size) { byte[] buf = new byte[1024]; int cnt = -1; using (System.IO.Stream remoteStream = remoteFile.OpenWrite(false)) { using (System.IO.Stream localStream = localFile.OpenRead()) { localStream.Seek(remoteFile.Size, System.IO.SeekOrigin.Begin); // can't seek. OpenWrite如果不overwrite自动append //remoteStream.Seek(0, System.IO.SeekOrigin.End); do { cnt = localStream.Read(buf, 0, buf.Length); remoteStream.Write(buf, 0, cnt); } while (cnt == buf.Length); } } } return(true); } //FtpClient client = LoginFtp(ftpAddress); //client.SendFile(localFilename, remoteFilename); }
public void ConnectToSite(FtpSiteData siteData) { UnbindCurrentFtpSiteEvent(); CurrentFtpClient = siteData.GetFtpClient(); this.Invoke(new ThreadHelper.UnnamedDelegate(delegate { btnQuickConnect.Enabled = false; SetLvRemoteFileGray(false); BindCurrentFtpSiteEvent(); })); var site = CurrentFtpClient; site.BeginLogin(); }
private void btnAddSite_Click(object sender, EventArgs e) { if (CheckSiteSettingChanged(sender) == System.Windows.Forms.DialogResult.Cancel) { return; } FtpSiteDataGroup group = null; TreeNode groupNode = null; GetCurrentGroupNode(out group, out groupNode); //用户输入新建站点名称 var tmpSiteName = InputForm.GetInput("新建站点", "站点名称", ""); if (String.IsNullOrEmpty(tmpSiteName)) { return; } //创建FtpSiteData对象 var tmpSiteData = new FtpSiteData() { GUID = Guid.NewGuid().ToString(), Name = tmpSiteName, Port = 21, Group = group }; //在树形控件中创建节点 var tmpNode = groupNode.Nodes.Add(tmpSiteName, tmpSiteName, "Site", "Site"); tmpNode.Tag = tmpSiteData; //添加到组的站点列表中 group.Sites.Add(tmpSiteData); //设置选中的节点为新建节点 tvSites.SelectedNode = tmpNode; }