Beispiel #1
0
        public void DownloadFileTest()
        {
            var cfg = new Config();

            cfg.ProtocolType = FtpType.FTP;
            cfg.HostName     = "192.168.0.226";
            cfg.UserName     = "******";
            cfg.Password     = "******";
            cfg.TlsHostCertificateFingerprint = "4d:d5:9e:b1:64:13:ce:fd:49:a9:d0:d1:ba:ae:9f:07:04:8d:e1:e4";
            cfg.FtpSecureType = FtpSecure.Explicit;
            cfg.SpeedLimit    = 0;
            cfg.LocalPath     = @"D:\TestFTP\download\";
            cfg.RemotePath    = "/download/";

            var records = new List <TransferRecord>()
            {
                new TransferRecord()
                {
                    FileName = "core.pdf", SHA256 = "", OperationType = Operation.Download
                },
                new TransferRecord()
                {
                    FileName = "系統教育訓練教材_1_偵結數位卷建檔.docx", SHA256 = "A790C40E4AC7BBD6A786519187733DC5074C3E1600202342702417671AEBDE56", OperationType = Operation.Download
                }
            };

            var           client = new WinSCPClient(cfg);
            StringBuilder error  = new StringBuilder();

            client.Operate(records);
            foreach (var r in records)
            {
                if (!r.Done)
                {
                    error.AppendLine(r.ErrorMessage);
                }
            }
            Assert.AreEqual(string.Empty, error.ToString());
        }
Beispiel #2
0
        public void OperateTest()
        {
            var client = new WinSCPClient(cfg);

            // 取得檔案
            string xmlString = _xmlString;
            var    files     = new List <TransferRecord>();

            if (!string.IsNullOrWhiteSpace(xmlString))
            {
                var xmlFiles = xmlString.DeserializeXml <XMLOptions.Files>();

                files = xmlFiles.ListFileTag.Select(p => new TransferRecord()
                {
                    FileName      = p.Name,
                    SHA256        = p.SHA256,
                    OperationType = (Operation)Enum.Parse(typeof(Operation), p.OperationType)
                }).ToList();
            }

            client.Operate(files);
            Assert.AreEqual(files.FirstOrDefault().SHA256, files.FirstOrDefault().FileSHA256);
        }
Beispiel #3
0
        public static void Main(string[] args)
        {
            List <string> error = new List <string>();

            //IDataService xmlService = new XmlDataService();
            //XMLOptions xml = new XMLOptions();
            //FileWatcher watcher = new FileWatcher();

            try
            {
                log.Info("**********Application Start**********");
                //建立xml資料夾監聽
                watcher = new FileWatcher();
                watcher.Init();

                //初始化伺服端設定檔
                cfg = new Config();
                cfg.Init();

                //var client = new WinSCPClient(cfg);
                //建立winscp client
                client = new WinSCPClient(cfg);

                //監聽新增事件
                watcher.EvtGetFileName += new FileWatcher.DelGetFileName(GetFileName);

                //初始化,xml資料夾內檔案執行傳輸
                foreach (var oneXml in watcher.FileList)
                {
                    Task task = new Task(() =>
                    {
                        MainOperate(oneXml);
                    });
                    tasks.Add(task);
                }

                while (0 < tasks.Count)
                {
                    tasks[0].Start();
                    Task.WaitAny(tasks[0]);

                    var temp = tasks.ToList();
                    temp.RemoveAt(0);
                    tasks = temp;
                }



                //var cfg = new Config();
                //cfg.Init();

                ////var client = new WinSCPClient(cfg);
                //client = new WinSCPClient(cfg);
                //// 取得檔案
                //var filepath = xmlService.GetFilePath();
                //var files = xmlService.GetRecords(filepath);

                //client.Operate(files);

                //foreach (var f in files)
                //{
                //    if (f.Done)
                //    {
                //        error.Add($"[完成]檔案名稱:{f.FileName}\n傳輸速率:{f.TransferSpeed.ToString("#,#")}(kB/s)");
                //    }
                //    else
                //    {
                //        error.Add($"[失敗]檔案名稱:{f.FileName}\n{f.ErrorMessage}");
                //    }
                //}

                ////傳輸完成後產生紀錄檔
                //xml.CreateXmlFile(files, $"{cfg.FinishXMLFilePath}{DateTime.Now.ToString("yyyyMMddHHmm")}.xml");
            }
            catch (ArgumentException ex)
            {
                error.Add($"伺服器連線資訊設定檔錯誤: {ex.Message}");
                Console.WriteLine($"伺服器連線資訊設定檔錯誤: {ex.Message}");
            }
            catch (Exception ex)
            {
                error.Add($"Error: {ex.Message}");
            }
            finally
            {
                if (error.Count > 0)
                {
                    foreach (var er in error)
                    {
                        log.Error(er);
                        Console.WriteLine(er);
                    }
                }
                log.Info("**********Application End**********");
                Console.WriteLine("The End.");

                Console.ReadKey();
            }
        }