//上传文件夹 private void toolStripMenuItem4_Click(object sender, EventArgs e) { try { string dirPath = FileHelper.GetFolderToOpen(false); if (dirPath == null) { return; } ulong dirSize = FileHelper.GetDirectorySize(dirPath); if (this.IsNetworkDisk) { NetworkDiskState state = this.fileDirectoryOutter.GetNetworkDiskState(this.netDiskID); ulong available = state.TotalSize - state.SizeUsed; if (available < dirSize) { MessageBox.Show(string.Format("空间不足!网络硬盘剩余空间为{0},所需空间为{1}!", PublicHelper.GetSizeString(available), PublicHelper.GetSizeString(dirSize))); return; } } string containerPath = this.currentDirPath; string[] names = dirPath.Split('\\'); string dirName = names[names.Length - 1]; this.fileDirectoryOutter.Upload(this.ownerID, this.netDiskID, dirPath, containerPath + dirName); } catch (Exception ee) { MessageBox.Show(ee.Message); } }
public void Initialize(TransferingProject info, bool offlineFile) { this.transmittingFileInfo = info; this.ShowIcon(info.ProjectName, info.IsFolder); this.skinLabel_FileName.Text = this.transmittingFileInfo.ProjectName; this.toolTip1.SetToolTip(this.skinLabel_FileName, this.transmittingFileInfo.ProjectName); if (info.IsSender) { this.pictureBox_send.Visible = true; this.pictureBox_receive.Visible = false; this.skinLabel_receive.Visible = false; this.skinLabel_receive.Enabled = false; this.skinLabel_cancel.Visible = true; this.skinLabel_cancel.Enabled = true; } else { this.pictureBox_send.Visible = false; this.pictureBox_receive.Visible = true; this.skinLabel_receive.Visible = true; this.skinLabel_receive.Enabled = true; this.skinLabel_cancel.Visible = true; this.skinLabel_cancel.Enabled = true; this.skinLabel_cancel.Text = "拒绝"; } this.label_speed.Visible = false; this.skinLabel_speedTitle.Visible = false; string sizeStr = PublicHelper.GetSizeString((ulong)this.transmittingFileInfo.TotalSize); this.label_fileSize.Text = sizeStr; }
private void SetProgress2(ulong total, ulong transmitted) { if (this.InvokeRequired) { object[] args = { total, transmitted }; this.Invoke(new CbGeneric <ulong, ulong>(this.SetProgress2), args); } else { this.label_speed.Visible = true; this.skinLabel_speedTitle.Visible = true; this.totalSize = total; this.lastTransmitted = transmitted; this.skinProgressBar2.Maximum = 1000; this.skinProgressBar2.Value = (int)(transmitted * 1000 / total); DateTime now = DateTime.Now; TimeSpan span = now - this.lastDisplaySpeedTime; if (span.TotalSeconds >= 1) { if (!this.firstSecond) { if (lastSpeed == 0) { lastSpeed = (ulong)((transmitted - this.lastTransmittedPreSecond) / span.TotalSeconds);; } ulong transferSpeed = (ulong)((transmitted - this.lastTransmittedPreSecond) / span.TotalSeconds); //transferSpeed = (transferSpeed + 7 * this.lastSpeed) / 8; this.lastSpeed = transferSpeed; byte littleNum = 0; if (transferSpeed > 1024 * 1024) { littleNum = 1; } this.label_speed.Text = PublicHelper.GetSizeString((ulong)transferSpeed, littleNum) + "/s"; int leftSecs = transferSpeed == 0 ? 10000 : (int)((total - transmitted) / transferSpeed); int hour = leftSecs / 3600; int min = (leftSecs % 3600) / 60; int sec = ((leftSecs % 3600) % 60) % 60; this.lastDisplaySpeedTime = now; } this.lastTransmittedPreSecond = transmitted; if (this.firstSecond) { this.firstSecond = false; } } } }
private void 文件ToolStripMenuItem_Click(object sender, EventArgs e) { try { string filePath = FileHelper.GetFileToOpen("请选择要上传的文件"); if (filePath == null) { return; } string fileName = FileHelper.GetFileNameNoPath(filePath); foreach (ListViewItem item in this.listView_fileDirectory.Items) { if (((FileOrDirectoryTag)item.Tag).IsFile && item.Text.ToLower() == fileName.ToLower()) { if (!WindowsHelper.ShowQuery(string.Format("{0}已经存在,确定要覆盖它吗?", fileName))) { return; } } } if (this.IsNetworkDisk) { ulong fileSize = FileHelper.GetFileSize(filePath); NetworkDiskState state = this.fileDirectoryOutter.GetNetworkDiskState(this.netDiskID); ulong available = state.TotalSize - state.SizeUsed; if (available < fileSize) { MessageBox.Show(string.Format("网络硬盘剩余空间为{0},无法上传大小为{1}的文件!", PublicHelper.GetSizeString(available), PublicHelper.GetSizeString(fileSize))); return; } } this.fileDirectoryOutter.Upload(this.ownerID, this.netDiskID, filePath, this.currentDirPath + fileName); } catch (Exception ee) { MessageBox.Show(ee.Message); } }
/// <summary> /// 设置UI显示的进度表。 /// </summary> private void SetProgress(ulong total, ulong transmitted) { if (this.InvokeRequired) { object[] args = { total, transmitted }; this.BeginInvoke(new CbGeneric <ulong, ulong>(this.SetProgress), args); } else { this.progressBar1.Maximum = 1000; this.progressBar1.Value = (int)(transmitted * 1000 / total); TimeSpan span = DateTime.Now - this.lastShowTime; if (span.TotalSeconds >= 1) { this.lastShowTime = DateTime.Now; this.label_progress.Text = string.Format("{0}/{1}", PublicHelper.GetSizeString(transmitted), PublicHelper.GetSizeString(total)); } } }
/// <summary> /// Set progress. /// </summary> private void SetProgress(ulong total, ulong transfered) { if (InvokeRequired) { object[] args = { total, transfered }; BeginInvoke(new CbGeneric <ulong, ulong>(SetProgress), args); } else { progressBar.Maximum = 1000; progressBar.Value = (int)(transfered * 1000 / total); TimeSpan span = DateTime.Now - mLatestShowTime; if (span.TotalSeconds >= 1) { mLatestShowTime = DateTime.Now; label_Progress.Text = string.Format("{0}/{1}", PublicHelper.GetSizeString(transfered), PublicHelper.GetSizeString(total)); } } }
private void listView_fileDirectory_DragDrop(object sender, DragEventArgs e) { if ((this.ownerSharedAllDisk || this.IsNetworkDisk) && this.currentDirPath == null) { return; } try { string containerPath = this.currentDirPath; ListViewHitTestInfo containerInfo = this.listView_fileDirectory.HitTest(this.PointToClient(new Point(e.X, e.Y))); if (containerInfo.Item != null && !((FileOrDirectoryTag)containerInfo.Item.Tag).IsFile) { containerPath += containerInfo.Item.Text + "\\"; } ListViewItem targetItem = (ListViewItem)e.Data.GetData(typeof(ListViewItem)); if (targetItem != null) { #region 内部拖动 if (targetItem == containerInfo.Item) { return; } if (containerPath != this.currentDirPath) { if (this.ExistSameNameItem(containerPath, targetItem.Text)) { MessageBox.Show("目标目录中存在同名文件或文件夹,请更改名称后重试!"); return; } } List <string> fileNames = new List <string>(); List <string> dirNames = new List <string>(); if (((FileOrDirectoryTag)targetItem.Tag).IsFile) { fileNames.Add(targetItem.Text); } else { dirNames.Add(targetItem.Text); } OperationResult result = null; if ((Control.ModifierKeys & Keys.Control) == Keys.Control) { result = this.fileDirectoryOutter.Copy(this.ownerID, this.netDiskID, this.currentDirPath, fileNames, dirNames, containerPath); } else { if (this.currentDirPath != containerPath) { result = this.fileDirectoryOutter.Move(this.ownerID, this.netDiskID, this.currentDirPath, fileNames, dirNames, containerPath); } } if (result != null && !result.Succeed) { MessageBox.Show(result.ErrorMessage); } this.LoadDirectory(this.currentDirPath, true); #endregion return; } if (e.Data.GetDataPresent(DataFormats.FileDrop)) { #region 从外部拖入 string[] fileOrDirs = (string[])e.Data.GetData(DataFormats.FileDrop); if (!this.allowUploadFolder) { foreach (string fileOrDirPath in fileOrDirs) { if (Directory.Exists(fileOrDirPath)) { MessageBox.Show("不能够上传文件夹。"); return; } } } ulong fileSize = 0; foreach (string fileOrDirPath in fileOrDirs) { if (File.Exists(fileOrDirPath)) { fileSize += FileHelper.GetFileSize(fileOrDirPath); } if (Directory.Exists(fileOrDirPath)) { fileSize += FileHelper.GetDirectorySize(fileOrDirPath); } string fileOrDirName = FileHelper.GetFileNameNoPath(fileOrDirPath); if (this.ExistSameNameItem(containerPath, fileOrDirName)) { MessageBox.Show("目标目录中存在同名文件或文件夹,请更改名称后重新上传!"); return; } } if (this.IsNetworkDisk) { NetworkDiskState state = this.fileDirectoryOutter.GetNetworkDiskState(this.netDiskID); ulong available = state.TotalSize - state.SizeUsed; if (available < fileSize) { MessageBox.Show(string.Format("空间不足!网络硬盘剩余空间为{0},所需空间为{1}!", PublicHelper.GetSizeString(available), PublicHelper.GetSizeString(fileSize))); return; } } foreach (string fileOrDirPath in fileOrDirs) { if (File.Exists(fileOrDirPath)) { string fileName = FileHelper.GetFileNameNoPath(fileOrDirPath); this.fileDirectoryOutter.Upload(this.ownerID, this.netDiskID, fileOrDirPath, containerPath + fileName); } if (Directory.Exists(fileOrDirPath)) { string[] names = fileOrDirPath.Split('\\'); string dirName = names[names.Length - 1]; this.fileDirectoryOutter.Upload(this.ownerID, this.netDiskID, fileOrDirPath, containerPath + dirName); //this.UploadDirectory(filePath, containerPath); } } #endregion } } catch (Exception ee) { MessageBox.Show(ee.Message); } }
private void LoadDirectory(string path, bool tipOnException) { if (this.ownerID == null) { return; } Cursor old = Cursor.Current; Cursor.Current = Cursors.WaitCursor; try { SharedDirectory sharedDirectory = this.fileDirectoryOutter.GetSharedDirectory(this.ownerID, this.netDiskID, path); if (sharedDirectory == null) { MessageBox.Show("网络硬盘未开放!"); } else if (!sharedDirectory.Valid) { MessageBox.Show(sharedDirectory.Exception); } else { if (path == null) { this.ownerSharedAllDisk = sharedDirectory.DirectoryPath == null; } #region Action this.listView_fileDirectory.Items.Clear(); if (sharedDirectory.DirectoryPath == null) { sharedDirectory.DriveList.Sort(); foreach (DiskDrive drive in sharedDirectory.DriveList) { int imageIndex = 2; if (drive.DriveType == DriveType.CDRom) { imageIndex = 3; } if (drive.DriveType == DriveType.Removable) { imageIndex = 4; } ListViewItem item = new ListViewItem(new string[] { drive.Name, "", "" }, imageIndex); item.Tag = new FileOrDirectoryTag(drive.Name, 0, DateTime.Now, false); string name = drive.VolumeLabel; if (name == null || name.Length == 0) { name = drive.Name; } item.ToolTipText = string.Format("{0}\n可用空间:{1}\n总 大 小:{2}", name, PublicHelper.GetSizeString(drive.AvailableFreeSpace), PublicHelper.GetSizeString(drive.TotalSize)); this.listView_fileDirectory.Items.Add(item); } } else { foreach (DirectoryDetail dirDetail in sharedDirectory.SubDirectorys) { ListViewItem item = new ListViewItem(new string[] { dirDetail.Name, dirDetail.CreateTime.ToString(), "" }, 0); //ListViewItem item = this.listView_fileDirectory.Items.Add(dirName, 0); item.Tag = new FileOrDirectoryTag(dirDetail.Name, 0, dirDetail.CreateTime, false); this.listView_fileDirectory.Items.Add(item); } foreach (FileDetail file in sharedDirectory.FileList) { ListViewItem item = new ListViewItem(new string[] { file.Name, file.CreateTime.ToString(), PublicHelper.GetSizeString((uint)file.Size) }, this.GetIconIndex(file.Name)); //ListViewItem item = this.listView_fileDirectory.Items.Add(file.Name, this.GetIconIndex(file.Name)); item.Tag = new FileOrDirectoryTag(file.Name, file.Size, file.CreateTime, true); item.ToolTipText = string.Format("大 小:{0}\n创建日期:{1}", PublicHelper.GetSizeString((uint)file.Size), file.CreateTime); this.listView_fileDirectory.Items.Add(item); } this.columnIndexToSort = 0; this.asendingOrder = true; this.listView_fileDirectory.Sort(); } this.currentDirPath = path; if (this.currentDirPath != null && !this.currentDirPath.EndsWith("\\")) { this.currentDirPath += "\\"; } string displayPath = this.IsNetworkDisk ? "网络硬盘" : "共享磁盘"; if (this.currentDirPath != null && this.currentDirPath != sharedDirectory.DirectoryPath) { displayPath += "\\" + this.currentDirPath; } this.toolStripTextBox1.Text = displayPath; this.listView_fileDirectory.LabelEdit = (sharedDirectory.DirectoryPath != null); #endregion } } catch (Exception ee) { if (tipOnException) { MessageBox.Show(ee.Message); } } finally { Cursor.Current = old; } }