/// <summary> /// 删除文件或者文件夹 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tsbDelete_Click(object sender, EventArgs e) { ListView.SelectedListViewItemCollection lstSelected = LvDataContent.SelectedItems; if (lstSelected.Count > 0) { foreach (ListViewItem item in LvDataContent.SelectedItems) { TDataInfoDTO dto = (item as ListViewItemEx).ItemData; //删除文件夹 if (dto.IsForlder) { TDataInfoDTO[] result = _client.TDataInGetByParentKey(dto.MetaDataId); if (result != null && result.Length > 0) { Array.ForEach(result, t => { _client.TDataInfoDelete(t.MetaDataId); }); } } bool success = _client.TDataInfoDelete(dto.MetaDataId); if (success) { LvDataContent.Items.Remove(item); } } } }
/// <summary> /// 返回 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tsbReturn_Click(object sender, EventArgs e) { TDataInfoDTO dto = _client.TDataInfoQueryById(_currentId); string parentId = dto.ParentId; IniliazeListView(parentId); }
public void View(string dataId) { panel1.Visible = true; TDataInfoDTO dto = _client.TDataInfoQueryById(dataId); Text = dto.DataName; //文件图片 if (dto.DataName.ToLower().EndsWith(".doc") || dto.DataName.ToLower().EndsWith(".docx") || dto.DataName.ToLower().EndsWith(".ppt") || dto.DataName.ToLower().EndsWith(".pptx") || dto.DataName.ToLower().EndsWith(".xls")) { string dns = _client.Endpoint.Address.Uri.AbsoluteUri; dns = dns.Remove(dns.LastIndexOf('/')); panel1.Visible = false; webBrowser1.Navigate(dns + "/FlexPaper/View.htm?name=" + dto.MetaDataId); } else if (dto.DataName.ToLower().EndsWith(".png") || dto.DataName.ToLower().EndsWith(".jpg") || dto.DataName.ToLower().EndsWith(".bmp") || dto.DataName.ToLower().EndsWith(".jpeg")) { string dns = _client.Endpoint.Address.Uri.AbsoluteUri; dns = dns.Remove(dns.LastIndexOf('/')); panel1.Visible = false; webBrowser1.Navigate(dns + "/imgviewer.html?name=" + dto.MetaDataId + Path.GetExtension(dto.DataName)); } else if (dto.DataName.ToLower().EndsWith(".txt")) { string dns = _client.Endpoint.Address.Uri.AbsoluteUri; dns = dns.Remove(dns.LastIndexOf('/')); panel1.Visible = false; webBrowser1.Navigate(dns + "/vedios/" + dto.MetaDataId + Path.GetExtension(dto.DataName)); } //视频 else if (dto.DataName.ToLower().EndsWith("mp4") || dto.DataName.ToLower().EndsWith("ogg") || dto.DataName.ToLower().EndsWith("webm") || dto.DataName.ToLower().EndsWith("flv")) { string dns = _client.Endpoint.Address.Uri.AbsoluteUri; dns = dns.Remove(dns.LastIndexOf('/')); //System.Diagnostics.Process.Start("iexplore.exe", "http://" + dns + "/index.html?name=" + dto.DataName); panel1.Visible = false; webBrowser1.Navigate(dns + "/index.html?name=" + dto.MetaDataId + Path.GetExtension(dto.DataName)); } //压缩文件 else if (dto.DataName.ToLower().EndsWith("zip") || dto.DataName.ToLower().EndsWith("rar")) { string path = Path.Combine(Path.GetTempPath(), dto.DataName); if (File.Exists(path)) { System.Diagnostics.Process.Start(path); this.Close(); } if (backgroundWorker1.IsBusy == false) { panel1.Visible = true; backgroundWorker1.RunWorkerAsync(new object[] { dto, path }); } } else { progressBar1.Visible = false; label1.Text = "文件类型不支持预览..."; } }
/// <summary> /// 更新一条TDataInfo记录 /// </summary> /// <param name="dto">TDataInfo实体</param> /// <returns>是否更新成功</returns> public bool Update(TDataInfoDTO dto) { try { string sql = "update T_DataInfo set ParentId=@ParentId,DataName=@DataName,LastModifyTime=@LastModifyTime,DataDescription=@DataDescription,DownloadTimes=@DownloadTimes where MetaDataId=@MetaDataId"; return(_repository.ExecuteCommand(sql, new DbParameter[] { new SqlParameter("@DataName", dto.DataName), new SqlParameter("@ParentId", dto.ParentId == null ? string.Empty : dto.ParentId), new SqlParameter("@LastModifyTime", dto.LastModifyTime), new SqlParameter("@DataDescription", dto.DataDescription == null ? string.Empty : dto.DataDescription), new SqlParameter("@DownloadTimes", dto.DownloadTimes), new SqlParameter("@MetaDataId", dto.MetaDataId) }) > 0); } catch (Exception ex) { throw ex; } }
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { string filePath = e.Argument.ToString(); TDataInfoDTO result = new TDataInfoDTO(); result.MetaDataId = Guid.NewGuid().ToString(); result.DataName = Path.GetFileName(filePath); // result.DataDescription = txtDescription.Text; byte[] total = IOHelper.GetStreamBuffer(filePath); result.DownloadTimes = 0; result.LastModifyTime = DateTime.Now; result.CreateTime = DateTime.Now; result.BaseInfoId = _id; result.UploadPeople = _uploadBy; result.FileSize = total.Length.ToString(); bool success = _client.TDataInfoAdd(result); if (success) { byte[] buffer = new byte[4096000]; //4M int percent = total.Length / buffer.Length; for (long index = 0; index < percent; index++) { buffer = total.Skip((int)index * buffer.Length).Take(buffer.Length).ToArray(); bool upSuccess = _client.TDataInfoUploadFile(buffer, result.MetaDataId, (int)(index * buffer.Length / 40960000)); if (upSuccess == false) { e.Result = false; return; } backgroundWorker1.ReportProgress((int)((index + 1) * buffer.Length * 100 / total.Length)); manualReset.WaitOne(); } int left = total.Length % buffer.Length; if (left > 0) { byte[] leftBuffer = total.Skip(percent * buffer.Length).Take(left).ToArray(); bool upSuccess = _client.TDataInfoUploadFile(leftBuffer, result.MetaDataId, total.Length / 40960000); if (upSuccess == false) { e.Result = false; return; } manualReset.WaitOne(); backgroundWorker1.ReportProgress(100); } e.Result = true; } }
private void tsmOpen_Click(object sender, EventArgs e) { TDataInfoDTO dto = (LvDataContent.SelectedItems[0] as ListViewItemEx).ItemData; if (dto.IsForlder) { IniliazeListView(dto.MetaDataId); } else { //打开 FormView view = new FormView(); view.Show(); view.View(dto.MetaDataId); } }
/// <summary> /// 新增一条TDataInfo记录 /// </summary> /// <param name="dto">TDataInfo实体</param> /// <returns>是否新增成功</returns> public bool Add(TDataInfoDTO dto) { try { var entity = dto.ProjectedAs <T_DataInfo>(); if (_repository.Insert(entity) > 0) { return(true); } else { return(false); } } catch (Exception ex) { throw ex; } }
private void UpdateViewItem(TDataInfoDTO dto, ListViewItemEx lvi) { lvi.Text = dto.DataName; lvi.ItemData = dto; if (dto.IsForlder == false) { string tempFileExtension = Path.GetExtension(dto.DataName); lvi.ImageIndex = CommomHelper.GetImageIndex(dto, imageList1); lvi.ToolTipText = string.Format("文件名称:{0}\r\n文件大小:{1}M\r\n上传时间:{2}\r\n上传人:{3}\r\n修改时间:{4}\r\n下载次数:{5}\r\n文件描述:{6}", dto.DataName, CommomHelper.ParseMB(dto.FileSize), dto.CreateTime, dto.UploadPeople, dto.LastModifyTime, dto.DownloadTimes, dto.DataDescription); } else { if (!imageList1.Images.Keys.Contains("Folder")) { imageList1.Images.Add("Folder", Resources.folder); } lvi.ImageIndex = imageList1.Images.Keys.IndexOf("Folder"); string.Format("文件名称:{0}\r\n上传时间:{1}\r\n上传人:{2}\r\n修改时间:{3}\r\n文件描述:{4}", dto.DataName, dto.CreateTime, dto.UploadPeople, dto.LastModifyTime, dto.DataDescription); } }
/// <summary> /// 新建文件夹 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tsbNewForlder_Click(object sender, EventArgs e) { TDataInfoDTO dto = new TDataInfoDTO(); dto.BaseInfoId = _baseInfoId; dto.CreateTime = DateTime.Now; dto.DataName = "新建文件夹"; dto.UploadPeople = CommonData.LoginInfo.EmployeeName; dto.IsForlder = true; dto.DownloadTimes = 0; dto.LastModifyTime = DateTime.Now; dto.MetaDataId = Guid.NewGuid().ToString(); dto.ParentId = _currentId; bool result = _client.TDataInfoAdd(dto); if (result) { CreateViewItem(dto, LvDataContent.Items.Count, true); //LvDataContent.Items[LvDataContent.Items.Count - 1].BeginEdit(); } }
private void LvDataContent_MouseDoubleClick(object sender, MouseEventArgs e) { if (e.Button == System.Windows.Forms.MouseButtons.Left) { if (LvDataContent.SelectedItems.Count == 1) { TDataInfoDTO dto = (LvDataContent.SelectedItems[0] as ListViewItemEx).ItemData; if (dto.IsForlder) { IniliazeListView(dto.MetaDataId); } else { //打开 FormView view = new FormView(); view.Show(); view.View(dto.MetaDataId); } } } }
private void LvDataContent_AfterLabelEdit(object sender, LabelEditEventArgs e) { string newText = e.Label; if (string.IsNullOrEmpty(newText) || newText == _oldText) { e.CancelEdit = true; return; } TDataInfoDTO dto = (LvDataContent.Items[e.Item] as ListViewItemEx).ItemData; dto.DataName = newText; dto.LastModifyTime = DateTime.Now; dto.ParentId = dto.ParentId == null ? string.Empty : dto.ParentId; bool success = _client.TDataInfoUpdate(dto); if (success) { UpdateViewItem(dto, LvDataContent.Items[e.Item] as ListViewItemEx); } }
private void tsbUploadForlder_Click(object sender, EventArgs e) { FolderBrowserDialog dialog = new FolderBrowserDialog(); //dialog.RootFolder = Environment.SpecialFolder.MyComputer; if (dialog.ShowDialog() == DialogResult.OK) { string folderPath = dialog.SelectedPath; string folderName = folderPath.Remove(0, folderPath.LastIndexOf("\\") + 1); //新建文件夹 TDataInfoDTO dto = new TDataInfoDTO(); dto.BaseInfoId = _baseInfoId; dto.CreateTime = DateTime.Now; dto.DataName = folderName; dto.UploadPeople = CommonData.LoginInfo.EmployeeName; dto.IsForlder = true; dto.DownloadTimes = 0; dto.LastModifyTime = DateTime.Now; dto.MetaDataId = Guid.NewGuid().ToString(); dto.ParentId = _currentId; bool result = _client.TDataInfoAdd(dto); if (result) { CreateViewItem(dto, LvDataContent.Items.Count, false); IniliazeListView(dto.MetaDataId); //开始上传文件 Array.ForEach(Directory.GetFiles(folderPath), t => { ListViewItemEx ctr = new ListViewItemEx(_baseInfoId); ctr.Text = Path.GetFileName(t); string tempFileExtension = Path.GetExtension(t); LvDataContent.Items.Add(ctr); ctr.UploadFile(t, _currentId, imageList1); }); //LvDataContent.Items[LvDataContent.Items.Count - 1].BeginEdit(); } } }
public void UploadFile(string filePath, string parentId, ImageList lstImage) { _saveHistory = filePath; try { TDataInfoDTO uploadDTO = new TDataInfoDTO(); uploadDTO.MetaDataId = Guid.NewGuid().ToString(); uploadDTO.DataName = Path.GetFileName(filePath); uploadDTO.DownloadTimes = 0; uploadDTO.LastModifyTime = DateTime.Now; uploadDTO.CreateTime = DateTime.Now; uploadDTO.BaseInfoId = _baseId; uploadDTO.UploadPeople = CommonData.LoginInfo.EmployeeName; FileInfo info = new FileInfo(filePath); uploadDTO.FileSize = info.Length.ToString(); uploadDTO.IsForlder = false; uploadDTO.ParentId = parentId; bool success = _client.TDataInfoAdd(uploadDTO); if (success && !_bgwork.IsBusy) { this.ToolTipText = string.Format("文件名称:{0}\r\n文件大小:{1}M\r\n上传时间:{2}\r\n上传人:{3}\r\n修改时间:{4}\r\n下载次数:{5}\r\n文件描述:{6}", uploadDTO.DataName, CommomHelper.ParseMB(uploadDTO.FileSize), uploadDTO.CreateTime, uploadDTO.UploadPeople, uploadDTO.LastModifyTime, uploadDTO.DownloadTimes, uploadDTO.DataDescription); this.SubItems.Add(uploadDTO.DataName); this.SubItems.Add(CommomHelper.ParseMB(uploadDTO.FileSize) + "M"); this.SubItems.Add(uploadDTO.LastModifyTime.Value.ToString()); this.SubItems.Add(uploadDTO.UploadPeople); this.ImageIndex = CommomHelper.GetImageIndex(filePath, uploadDTO.MetaDataId, lstImage); ItemData = uploadDTO; byte[] buffer = IOHelper.GetStreamBuffer(filePath); OpareteType = OpareteTypeEnum.Upload; ShowProgressBar(); _bgwork.RunWorkerAsync(new object[] { buffer, uploadDTO.MetaDataId }); } } catch (Exception) { throw; } }
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { try { object[] obj = e.Argument as object[]; TDataInfoDTO dto = obj[0] as TDataInfoDTO; long totalSize = long.Parse(dto.FileSize); if (dto == null) { e.Result = null; return; } long total = 0; byte[] buffer = null; bool success = true; while (success) { using (FileStream stream = new FileStream(obj[1].ToString(), FileMode.Append)) { success = _client.TDataInfoDownloadFile(out buffer, total, dto.MetaDataId); if (success == false) { break; } total += buffer.Length; backgroundWorker1.ReportProgress((int)(total * 100 / totalSize)); stream.Write(buffer, 0, buffer.Length); } } e.Result = obj[1].ToString(); } catch (Exception) { e.Result = null; } }
private void CreateViewItem(TDataInfoDTO dto, int index, bool edit = false) { ListViewItemEx lvi = new ListViewItemEx(); lvi.ItemData = dto; lvi.Text = dto.DataName; if (dto.IsForlder == false) { lvi.ImageIndex = CommomHelper.GetImageIndex(dto, imageList1); lvi.ToolTipText = string.Format("文件名称:{0}\r\n文件大小:{1}M\r\n上传时间:{2}\r\n上传人:{3}\r\n修改时间:{4}\r\n下载次数:{5}\r\n文件描述:{6}", dto.DataName, CommomHelper.ParseMB(dto.FileSize), dto.CreateTime, dto.UploadPeople, dto.LastModifyTime, dto.DownloadTimes, dto.DataDescription); lvi.SubItems.Add(dto.DataName); lvi.SubItems.Add(CommomHelper.ParseMB(dto.FileSize) + "M"); lvi.SubItems.Add(dto.LastModifyTime.Value.ToString()); lvi.SubItems.Add(dto.UploadPeople); LvDataContent.Items.Insert(index, lvi); //lvi.SetOtherControl(); } else { if (!imageList1.Images.Keys.Contains("Folder")) { imageList1.Images.Add("Folder", Resources.folder); } lvi.ImageIndex = imageList1.Images.Keys.IndexOf("Folder"); string.Format("文件名称:{0}\r\n上传时间:{1}\r\n上传人:{2}\r\n修改时间:{3}\r\n文件描述:{4}", dto.DataName, dto.CreateTime, dto.UploadPeople, dto.LastModifyTime, dto.DataDescription); lvi.SubItems.Add(dto.DataName); lvi.SubItems.Add(CommomHelper.ParseMB(dto.FileSize) + "M"); lvi.SubItems.Add(dto.LastModifyTime.Value.ToString()); lvi.SubItems.Add(dto.UploadPeople); LvDataContent.Items.Insert(index, lvi); } if (edit) { lvi.BeginEdit(); } }
/// <summary> /// 结束拖动 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void listView1_DragDrop(object sender, DragEventArgs e) { // 返回插入标记的索引值 int index = LvDataContent.InsertionMark.Index; // 如果插入标记不可见,则退出. if (index == -1) { return; } // 如果插入标记在项目的右面,使目标索引值加一 if (LvDataContent.InsertionMark.AppearsAfterItem && index < LvDataContent.Items.Count - 1 && (LvDataContent.Items[index] as ListViewItemEx).ItemData.IsForlder == false) { index++; } ListViewItemEx target = LvDataContent.Items[index] as ListViewItemEx; //移动项 if (e.Effect == DragDropEffects.Move) { // 返回拖拽项 Dictionary <ListViewItemEx, int> items = (Dictionary <ListViewItemEx, int>)e.Data.GetData(typeof(Dictionary <ListViewItemEx, int>)); foreach (var item in items) { if (target.ItemData.IsForlder == false) { CreateViewItem(item.Key.ItemData, index); LvDataContent.Items.Remove(item.Key); if (item.Value >= index) { index++; } } else { TDataInfoDTO sourceDTO = item.Key.ItemData; sourceDTO.ParentId = target.ItemData.MetaDataId; bool success = _client.TDataInfoUpdate(sourceDTO); if (success) { LvDataContent.Items.Remove(item.Key); } } } } else if (e.Effect == (DragDropEffects.Copy | DragDropEffects.Link | DragDropEffects.Move)) { if (target.ItemData.IsForlder) { IniliazeListView(target.ItemData.MetaDataId); } //上传文件 string[] result = e.Data.GetData(DataFormats.FileDrop) as string[]; LvDataContent.ListViewItemSorter = new ListViewIndexComparer(); Array.ForEach(result, t => { ListViewItemEx ctr = new ListViewItemEx(_baseInfoId); ctr.Text = Path.GetFileName(t); string tempFileExtension = Path.GetExtension(t); LvDataContent.Items.Add(ctr); ctr.UploadFile(t, _currentId, imageList1); }); } }
public static int GetImageIndex(TDataInfoDTO dto, ImageList lstImg) { string fileExtention = Path.GetExtension(dto.DataName); string keyword = fileExtention; try { if (!lstImg.Images.Keys.Contains(fileExtention)) { //图片文件,寻找图片缩略图 if (fileExtention.ToLower().EndsWith(".png") || fileExtention.ToLower().EndsWith(".bmp") || fileExtention.ToLower().EndsWith(".jpeg") || fileExtention.ToLower().EndsWith(".jpg")) { keyword = dto.MetaDataId; Image targetImg = null; string tempDir = Path.Combine(System.Environment.GetEnvironmentVariable("TEMP"), "64"); if (!Directory.Exists(tempDir)) { Directory.CreateDirectory(tempDir); } string tempPath = Path.Combine(tempDir, dto.MetaDataId + ".jpeg"); if (!File.Exists(tempPath)) { //下载缩略图 string temp = Path.Combine(System.Environment.GetEnvironmentVariable("TEMP"), dto.MetaDataId + fileExtention); long total = 0; byte[] buffer = null; bool success = true; while (success) { using (FileStream stream = new FileStream(temp, FileMode.Append)) { success = _client.TDataInfoDownloadFile(out buffer, total, dto.MetaDataId); if (success == false) { break; } total += buffer.Length; stream.Write(buffer, 0, buffer.Length); } } Image sourceImg = Image.FromFile(temp); int width = sourceImg.Width * 64 / sourceImg.Height; targetImg = GetReducedImage(sourceImg, width, 64); targetImg.Save(tempPath, ImageFormat.Jpeg); // File.Delete(temp); } else { targetImg = Image.FromFile(tempPath); } lstImg.Images.Add(keyword, targetImg); } else { keyword = fileExtention; lstImg.Images.Add(keyword, IconsExtention.IconFromExtension(fileExtention, IconsExtention.SystemIconSize.Large)); } } } catch (Exception) { if (fileExtention.EndsWith(".exe")) { keyword = fileExtention; lstImg.Images.Add(keyword, Resources.exe); } } return(lstImg.Images.IndexOfKey(keyword)); }