예제 #1
0
        /// <summary>
        /// 移动图片
        /// </summary>
        private void FileDataCopy(List <Web_ItemLibrary> data, Stopwatch watch)
        {
            _G = txtTarget.Text.TrimEnd('\\');

            string summary = string.Empty;
            string oldPath = string.Empty;
            int    operate = (int)EnumOperate.File;
            string itemId  = string.Empty;
            string newPath = string.Empty;
            int    status  = 0;


            int iExists = 1, iUnExists = 1;

            for (int i = 0; i < data.Count; i++)
            {
                itemId = data[i].ItemId;

                string filePath = DESEncrypt.Decrypt(data[i].ItemFilePath);

                filePath = filePath.Replace(_domain, _G).Replace('/', '\\');
                filePath = filePath.Split('&').FirstOrDefault().ToLower();

                //D:\ItemImages\0d54bf62-e42b-460b-aab4-7e6bd1990221\76d408e5-2122-4e0f-b496-2d907186cbf7\6367830614380614892523145.rar
                filePath = filePath.Replace("D:".ToLower(), _G.ToLower()).Replace("ItemImages".ToLower(), _itemfiles.ToLower());

                if (!File.Exists(filePath))
                {
                    iUnExists++;
                    oldPath = filePath;
                    summary = $"路径:{filePath} 状态:< > 文件不存在";
                    status  = (int)EnumStatus.OldFileUnExists;
                }
                else
                {
                    iExists++;
                    // summary = $"路径:{filePath} 状态:< > 待复制";
                    //没有就创建一个基本文件夹

                    string filePathCopy = filePath.ToLower().Replace(_itemfiles.ToLower(), _itemfilescopy.ToLower());
                    try
                    {
                        //没有文件夹还需要创建
                        //拷贝原始文件
                        string fileName = filePathCopy.Split('\\').LastOrDefault();
                        string basePath = filePathCopy.Replace(fileName, "");
                        if (!Directory.Exists(basePath))
                        {
                            Directory.CreateDirectory(basePath);
                        }

                        //判断文件是否存在
                        if (File.Exists(filePathCopy))
                        {
                            status  = (int)EnumStatus.NewFileExists;
                            oldPath = filePath;
                            newPath = filePathCopy;
                            summary = $"拷贝文件:{filePath} 到 {filePathCopy} 状态:》文件已存在《";
                        }
                        else
                        {
                            File.Copy(filePath, filePathCopy);

                            status  = (int)EnumStatus.Ok;
                            oldPath = filePath;
                            newPath = filePathCopy;
                            summary = $"拷贝(压缩图片)文件:{filePath} 到 {filePathCopy} 状态:》成功《";
                        }
                    }
                    catch (Exception ex)
                    {
                        status  = (int)EnumStatus.Error;
                        summary = $"拷贝文件:{filePath} 状态:》失败{ex}";
                    }
                }

                if (this.InvokeRequired)
                {
                    this.Invoke(new DelegateWriteMessage(_comm.WriteMessage), new object[] { operate, itemId, oldPath, newPath, status, summary });
                    this.Invoke(new DelegateCurrent(_comm.Current), new object[] { i });
                    this.Invoke(new DelegateTimeCost(_comm.TimeCost), new object[] { watch.Elapsed.ToString() });
                }
                else
                {
                    _comm.WriteMessage(operate, itemId, oldPath, newPath, status, summary);
                    _comm.Current(i);
                    _comm.TimeCost(watch.Elapsed.ToString());
                }
            }


            summary = $"共计{data.Count}条,本地存在{iExists}条,不存在{iUnExists}条";


            if (this.InvokeRequired)
            {
                this.Invoke(new DelegateWriteMessage(_comm.WriteMessage), new object[] { 0, "", "", "", 0, summary });
            }
            else
            {
                _comm.WriteMessage(operate, itemId, oldPath, newPath, status, summary);
            }


            if (!watch.IsRunning)
            {
                watch.Stop();
            }
        }
예제 #2
0
        /// <summary>
        /// 处理数据
        /// </summary>
        /// <param name="data">需要处理的数据</param>
        /// <param name="watch">计时器</param>
        private void DataProcess(List <Web_ItemLibrary> data, Stopwatch watch)
        {
            Comm comm = new Comm(this.dataGV, this.tssldq, this.tsslhs);

            InfoStatus infoStatus = new InfoStatus();

            int  i          = 0;
            long fileLength = 0;

            foreach (var item in data)
            {
                i++;

                string filePath = string.Empty;
                if (!item.ItemFilePath.Contains(_domainOne))
                {
                    filePath = DESEncrypt.Decrypt(item.ItemFilePath);

                    filePath = filePath.Replace(_domain, _D).Replace('/', '\\');
                    filePath = filePath.Split('&').FirstOrDefault().ToLower();

                    //D:\ItemImages\0d54bf62-e42b-460b-aab4-7e6bd1990221\76d408e5-2122-4e0f-b496-2d907186cbf7\6367830614380614892523145.rar
                    filePath = filePath.Replace(_itemfiles.ToLower(), ItemImages.ToLower());

                    if (File.Exists(filePath))
                    {
                        var fileInfo = new System.IO.FileInfo(filePath);
                        //fileLength = fileLength + fileInfo.Length;
                        fileLength += fileInfo.Length;


                        string ossImgPath = filePath
                                            .Replace(ItemImages.ToLower(), _itemfiles.ToLower())
                                            .Remove(0, 3)
                                            .Replace('\\', '/').ToLower();

                        this.OssUpload(ossImgPath, filePath, item.ItemId, ref infoStatus);
                    }
                    else
                    {
                        infoStatus.iStatus = (int)EnumStatus.OldFileUnExists;
                        infoStatus.Summary = "本地文件不存在";
                        //写入日志
                        Console.WriteLine("没有显示");
                    }
                }
                else
                {
                    infoStatus.iStatus = (int)EnumStatus.NewFileExists;
                    infoStatus.Summary = "数据已经传输出[" + item.ItemFilePath + "]";
                    //写入日志
                    Console.WriteLine("没有显示");
                }


                if (this.InvokeRequired)
                {
                    this.Invoke(new DelegateWriteMessage(comm.WriteMessage), new object[] { 2, item.ItemId, filePath, infoStatus.OldPath, infoStatus.iStatus, infoStatus.Summary });
                    this.Invoke(new DelegateCurrent(comm.Current), new object[] { i, item.ItemId });
                    this.Invoke(new DelegateTimeCost(comm.TimeCost), new object[] { watch.Elapsed.ToString() });
                    this.Invoke(new DelegateTFileSize(TFileSize), new object[] { fileLength });
                }
                else
                {
                    comm.WriteMessage(2, item.ItemId, filePath, infoStatus.OldPath, infoStatus.iStatus, infoStatus.Summary);
                    comm.Current(i, item.ItemId);
                    comm.TimeCost(watch.Elapsed.ToString());
                    this.TFileSize(fileLength);
                }
            }
        }