private void MICopyFileName_Click(object sender, RoutedEventArgs e)
        {
            if (dgResult.ItemsSource == null && dgResult.SelectedItems.Count <= 0)
            {
                return;
            }

            List <MyFileInfo> list = new List <MyFileInfo>();

            foreach (var item in dgResult.SelectedItems)
            {
                MyFileInfo info = (MyFileInfo)item;
                if (info != null)
                {
                    list.Add(info);
                }
            }
            if (list.Count > 0)
            {
                StringBuilder sb = new StringBuilder();
                foreach (var qiNiuFileInfo in list)
                {
                    sb.AppendLine(qiNiuFileInfo.FileName);
                }
                if (!string.IsNullOrWhiteSpace(sb.ToString()))
                {
                    Clipboard.SetText(sb.ToString());
                }
            }
        }
        private void ReName()
        {
            if (dgResult.ItemsSource == null && dgResult.SelectedItems.Count <= 0)
            {
                return;
            }

            List <MyFileInfo> list = new List <MyFileInfo>();

            foreach (var item in dgResult.SelectedItems)
            {
                MyFileInfo info = (MyFileInfo)item;
                if (info != null)
                {
                    list.Add(info);
                }
            }
            if (list.Count > 0)
            {
                RenameWindow rw = new RenameWindow()
                {
                    WindowStartupLocation = WindowStartupLocation.CenterOwner,
                    Owner     = this,
                    FileName  = list[0].FileName,
                    S3Manager = _client,
                    Bucket    = S3Cfg.BucketName
                };

                rw.ShowDialog();
                Search();
            }
        }
        private void DownLoad()
        {
            //1.获得表中选中的数据
            if (dgResult.ItemsSource == null && dgResult.SelectedItems.Count <= 0)
            {
                return;
            }
            //2.选择下载保存的路径

            var sfd = new System.Windows.Forms.FolderBrowserDialog
            {
                Description         = @"选择保存位置",
                ShowNewFolderButton = true
            };


            if (sfd.ShowDialog() != System.Windows.Forms.DialogResult.OK)
            {
                return;
            }


            fileSaveDir = sfd.SelectedPath;


            List <MyFileInfo> list = new List <MyFileInfo>();

            foreach (var item in dgResult.SelectedItems)
            {
                MyFileInfo info = (MyFileInfo)item;
                if (info != null)
                {
                    list.Add(info);
                }
            }

            if (list.Count > 0)
            {
                //执行批量下载方法
                //使用线程池
                btnBatchDownload.IsEnabled = false;

                ThreadPool.QueueUserWorkItem(state =>
                {
                    batchDownLoad(list);
                });
                LoadProgressBar();
                Thread.Sleep(10);
            }
            pb1.Visibility = Visibility.Hidden;

            btnBatchDownload.IsEnabled = true;
        }
        private void Delete()
        {
            //1.获得表中选中的数据
            if (dgResult.ItemsSource == null && dgResult.SelectedItems.Count <= 0)
            {
                return;
            }

            List <MyFileInfo> list = new List <MyFileInfo>();

            foreach (var item in dgResult.SelectedItems)
            {
                MyFileInfo info = (MyFileInfo)item;
                if (info != null)
                {
                    list.Add(info);
                }
            }
            if (list.Count > 0)
            {
                string           msg          = string.Join(",\r\n", list.Select(q => q.FileName));
                MessageBoxResult confirmToDel = MessageBox.Show("确认要删除所选行吗?\r\n" + msg, "提示", MessageBoxButton.YesNo, MessageBoxImage.Question);

                if (confirmToDel != MessageBoxResult.Yes)
                {
                    return;
                }


                //执行批量删除
                List <string> ops = new List <string>();
                foreach (var key in list)
                {
                    S3Helper.Delete(_client, S3Cfg.BucketName, key.FileName);
                }


                Search();
                Thread.Sleep(10);
            }
        }
        private void Preview()
        {
            if (dgResult.ItemsSource == null && dgResult.SelectedItems.Count <= 0)
            {
                return;
            }

            List <MyFileInfo> list = new List <MyFileInfo>();

            foreach (var item in dgResult.SelectedItems)
            {
                MyFileInfo info = (MyFileInfo)item;
                if (info != null)
                {
                    list.Add(info);
                }
            }
            if (list.Count > 0)
            {
                string tempfile = Path.Combine(Environment.GetEnvironmentVariable("TEMP"), S3Helper.RemoveWindowsFileNameSpicalChar(list[0].FileName));


                System.Threading.ThreadPool.QueueUserWorkItem((state) =>
                {
                    bool res = S3Helper.Download(_client, S3Cfg.BucketName, list[0].FileName, tempfile);

                    Dispatcher.Invoke(new Action(() =>
                    {
                        if (res)
                        {
                            System.Diagnostics.Process.Start(tempfile);
                        }
                    }));
                });
            }
        }
        private void Search()
        {
            if (btnSearch.IsEnabled == false)
            {
                return;
            }

            btnSearch.IsEnabled = false;



            if (string.IsNullOrWhiteSpace(marker))
            {
                num            = 1;
                myFileInfoList = new List <MyFileInfo>();
            }

            if (!string.IsNullOrWhiteSpace(SyncTargetBucketsComboBox.Text))
            {
                S3Cfg.BucketName = SyncTargetBucketsComboBox.Text;
            }
            startWith = txtStartWith.Text.Trim();
            ThreadPool.QueueUserWorkItem((state) =>
            {
                //ListResult listResult = bucketManager.ListFiles(bucket, startWith, marker, 5000, "");
                ListObjectsRequest request = new ListObjectsRequest();
                request.BucketName         = S3Cfg.BucketName;
                request.Marker             = marker;
                request.Prefix             = startWith;
                request.MaxKeys            = 1000;
                // request.Delimiter = null;
                ListObjectsResponse response = _client.ListObjects(request);


                Dispatcher.Invoke(new Action(() =>
                {
                    if (response.HttpStatusCode == HttpStatusCode.OK && response.S3Objects.Count > 0)
                    {
                        marker = response.NextMarker;
                        foreach (S3Object item in response.S3Objects)
                        {
                            // item.EndUser
                            var f = new MyFileInfo
                            {
                                FileName    = item.Key,
                                FileType    = S3Helper.GetFileType(item.Key),
                                StorageType = item.StorageClass.Value,
                                FileSize    = S3Helper.GetFileSize(item.Size),
                                EndUser     = item.Owner.DisplayName,
                                CreateDate  = item.LastModified.ToString("yyyy/MM/dd HH:mm:ss")
                            };
                            myFileInfoList.Add(f);
                        }

                        if (myFileInfoList.Count > 0)
                        {
                            //dgResult.ItemsSource = !string.IsNullOrWhiteSpace(txtEndWith.Text)
                            //    ? qiNiuFileInfoList.Where(f => f.FileName.EndsWith(txtEndWith.Text.Trim()))
                            //    : qiNiuFileInfoList;
                            var list = myFileInfoList;


                            if (!string.IsNullOrWhiteSpace(txtEndWith.Text))
                            {
                                list = myFileInfoList.Where(f => f.FileName.EndsWith(txtEndWith.Text.Trim())).ToList();
                            }
                            if (list.Count > 0)
                            {
                                // dgResult.ItemsSource = list.OrderBy(t => t.CreateDate).ToList();
                                num  = 1;
                                list = list.OrderByDescending(t => t.CreateDate).ToList();
                                foreach (var s in list)
                                {
                                    s.Num = num++;
                                }
                                dgResult.ItemsSource = list;
                            }
                            else
                            {
                                dgResult.ItemsSource = new List <MyFileInfo>();
                            }
                            //  dgResult.ItemsSource = list;
                        }
                        else
                        {
                            marker = string.Empty;
                            dgResult.ItemsSource = new List <MyFileInfo>();
                        }

                        btnSearch.IsEnabled = true;
                    }
                }));
            });
        }