Esempio n. 1
0
        public virtual void RunUpload(IEnumerable <PictureItem> items, BackgroundWorker bw)
        {
            this.BW = bw;
            CreateDirectory(UploadFolder);
            BW.ReportProgress(0, "Сохранение фото...");
            ProgressTicker ticker = new ProgressTicker(items.Count(), 20);

            ticker.ProgressChanged += Ticker_ProgressChanged;
            foreach (var item in items)
            {
                try {
                    if (!ImageDownloadHelper.IsUrlImage((item.Address)))
                    {
                        throw new Exception("Скачиваемый контент не является графическим изображением.");
                    }

                    byte[] imageByteArray = ImageDownloadHelper.DownloadData(item.Address);
                    string ext            = imageByteArray.GetExtention();
                    string pictureName    = $"{item.Name}.{ext}";
                    item.Address = UploadPicture(imageByteArray, pictureName);
                    item.Status  = true;
                    ticker.Tick();
                }
                catch (Exception ex)
                {
                    item.Status   = false;
                    item.Address += $" Ошибка: {ex.Message}.";
                }
            }
            ticker = null;
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            ILog           log           = new ConsolePrintLog();
            IConfiguration configuration = args.BuildCreateConfiguration();
            var            logArgs       = new Dictionary <string, object>();
            Encoding       encoding      = configuration.ExplainConfigurationEncoding();
            string         urls_path     = configuration.GetConfigKey("urls-path", "urls-path");

            urls_path = FilePathExtend.ToAbsolutePath(urls_path);
            logArgs["--urls-path"] = urls_path;
            if (string.IsNullOrEmpty(urls_path))
            {
                log.Error("请输入参数: --urls-path=\"XXX\" 下载图片列表存储文件路径!", logArgs);
                return;
            }
            string is_override_argString = configuration.GetConfigKey("is-override", "is-override");

            if (!bool.TryParse(is_override_argString, out bool is_override))
            {
                logArgs["--is-override"] = is_override_argString;
                is_override = false;
                log.Info("参数 --is-override=\"{True|False}\" 无法取到正常值, 已默认为 False 执行后续逻辑!", logArgs);
            }
            logArgs["--is-override"] = is_override;
            log.Info($"参数解析完成", logArgs);
            if (!File.Exists(urls_path))
            {
                log.Error("下载图片列表存储文件不存在!", logArgs);
                return;
            }
            var imgDownHelper = new ImageDownloadHelper(log, 3);

            string[] lines = File.ReadAllLines(urls_path, encoding);
            lines = lines.Distinct().ToArray();
            Regex        imgUrlRegex = new Regex(@"^(http|https|ftp)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*@)?((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.[a-zA-Z]{2,4})(\:[0-9]+)?(/[^/][a-zA-Z0-9\.\,\?\'\\/\+&%\$#\=~_\-@]*)*$");
            IList <Task> tasks       = new List <Task>();

            foreach (string line in lines)
            {
                if (!imgUrlRegex.IsMatch(line))
                {
                    continue;
                }
                string imageUrl      = line;
                var    match         = imgUrlRegex.Match(line);
                string imageSavePath = match.Groups[2].Value;
                var    task          = imgDownHelper.DownloadAsync(imageUrl, imageSavePath);
                tasks.Add(task);
            }
            Task.WaitAll(tasks.ToArray());
        }
Esempio n. 3
0
        public void Download()
        {
            ILog   log      = new LogUniversal();
            var    helper   = new ImageDownloadHelper(log);
            string imgurl   = @"https://ytsimg.gitee.io/blog/favicon/TopHead.jpg";
            string filepath = @"C:\test_download_image.jpg";

            ExecuteResultStatue statue = helper.Download(imgurl, filepath);

            Assert.AreEqual(ExecuteResultStatue.Complate, statue);
            Assert.IsTrue(new FileInfo(filepath).Length > 0);
            File.Delete(filepath);

            imgurl += '1';
            statue  = helper.Download(imgurl, filepath);
            Assert.AreEqual(ExecuteResultStatue.NotFound404, statue);
            Assert.AreEqual(false, File.Exists(filepath));
        }