private void btnStart_Click(object sender, EventArgs e) { httpDownloader = new HttpDownloader(txtUrl.Text, $"{Application.StartupPath}\\{Path.GetFileName(txtUrl.Text)}"); httpDownloader.DownloadCompleted += HttpDownloader_DownloadCompleted; httpDownloader.ProgressChanged += HttpDownloader_ProgressChanged; httpDownloader.Start(); }
public void TestDownloader() { var zipUrl = "http://www.baidu.com"; // var zipUrl = "http://dzp79b220mp4w.cloudfront.net/g1-resources-package/trunk/g1.resources.trunk.1.4.0.0.zip"; // very slow, 弱网络 var downloader = new HttpDownloader(zipUrl, "test_download.html"); downloader.SetStepCallback( (ab) => { Console.WriteLine(string.Format("Downloader progress: {0}", downloader.Progress)); }); downloader.Start(); var lastProgress = 0d; while (!downloader.IsFinished) { var progress = downloader.Progress; if (!lastProgress.Equals(progress)) { // Assert.True(progress > 0); // Assert.True(progress < 1); // Console.WriteLine("Progress: {0}", progress); lastProgress = progress; } Thread.Sleep(1); } Assert.False(downloader.IsError); Assert.True(File.Exists("test_download.html")); }
private void baixarFila(object sender, EventArgs e, String linha) { httpDownloader = new HttpDownloader(linha, $"{Application.StartupPath}\\{Path.GetFileName(linha)}"); httpDownloader.DownloadCompleted += HttpDownloader_DownloadCompleted; httpDownloader.ProgressChanged += HttpDownloader_ProgressChanged; httpDownloader.Start(); }
private void Start_btn_Click(object sender, EventArgs e) { httpdownloader = new HttpDownloader(url_txtbox.Text, $"{Application.StartupPath}\\{Path.GetFileName(url_txtbox.Text)}"); httpdownloader.DownloadCompleted += HttpDownloader_DownloadComplete; httpdownloader.ProgressChanged += HttpDownloader_ProgressChanged; httpdownloader.Start(); Start_btn.Enabled = false; resume_btn.Enabled = true; pause_btn.Enabled = true; }
private void BtnCapNhat_Click(object sender, RoutedEventArgs e) { lblSpeed.Content = "Đang kết nối, vui lòng đợi . . ."; btnCapNhat.IsEnabled = false; var urlSetup = "https://github.com/duongvanson/ss/raw/master/SetupStudentSocial.msi"; downloader = new HttpDownloader(urlSetup, setup); downloader.DownloadProgressChanged += Downloader_DownloadProgressChanged;; downloader.DownloadCompleted += Downloader_DownloadCompleted;; downloader.Start(); }
private void OnHeaderRequestFinish(HttpRequester req) { if (req.IsError) { Error = req.Error; IsFinished = true; return; } using (req) { var lastModified = req.Response.LastModified; // md5(savepath) to save the last modified time var metaKey = SavePath; _metaFilePath = Path.Combine(_pullerMetaFolderPath, Md5Helper.Md5String(metaKey)); // no handle for UTC or time zone DateTime metaFileDateTime = DateTime.MinValue; if (File.Exists(_metaFilePath)) { long metaFileTicks; var metaFileTicksStr = File.ReadAllText(_metaFilePath); if (!long.TryParse(metaFileTicksStr, out metaFileTicks)) { Error = new Exception("meta file ticks parse error"); IsFinished = true; return; } metaFileDateTime = new DateTime(metaFileTicks); } _currentLastModifiedUtc = lastModified.ToUniversalTime(); HasDownloaded = _currentLastModifiedUtc != metaFileDateTime || !File.Exists(SavePath); if (HasDownloaded) { // do download _downloader = new HttpDownloader(_url, SavePath); _downloader.SetFinishCallback(OnDownloadFinish); _downloader.Start(); } else { // no modified, ignore! IsFinished = true; } } }
private void btnStart_Click(object sender, EventArgs e) { var url = txtUrl.Text; var defaultFolder = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); var defaultFileName = "default.unknown"; var defaultSavePath = Path.Combine(defaultFolder, defaultFileName); downloader = new HttpDownloader(url, defaultSavePath); downloader.StatusChanged += downloader_StatusChanged; downloader.DownloadInfoReceived += downloader_DownloadInfoReceived; downloader.DownloadCompleted += downloader_DownloadCompleted; downloader.ProgressChanged += downloader_ProgressChanged; downloader.ErrorOccured += downloader_ErrorOccured; btnStart.Enabled = false; downloader.Start();; }
public string DownloadFile(string url, string fileName) { var targetPath = Path.Combine(Path.GetTempPath(), "UpdateAutomagic"); if (!Directory.Exists(targetPath)) { Directory.CreateDirectory(targetPath); } var targetFilePath = Path.Combine(targetPath, fileName); HttpDownloader downloader = new HttpDownloader(url, targetFilePath); downloader.DownloadProgressChanged += Download_progress_change; downloader.DownloadCompleted += download_completed; downloader.DownloadErrorOccured += Download_error; downloader.Start(); return(targetFilePath); }
public void TestContinue() { var zipUrl = "http://sjres.icantw.com/g1-resources-package/trunk/g1.resources.trunk.1.3.0.3.zip"; // var zipUrl = "http://dzp79b220mp4w.cloudfront.net/g1-resources-package/trunk/g1.resources.trunk.1.4.0.0.zip"; // very slow, 弱网络 var savePath = "test_continue.zip"; if (File.Exists(savePath)) { File.Delete(savePath); } var downloader = new HttpDownloader(zipUrl, savePath, true); downloader.Start(); Thread.Sleep(2000); downloader.Cancel(); Console.WriteLine("Canceled! Now : {0}B/{1}B, {2}%", downloader.DownloadedSize, downloader.TotalSize, downloader.Progress * 100d); Assert.True(File.Exists(savePath + ".download")); Assert.True(!File.Exists(savePath)); Console.WriteLine("Start continue downloader..."); downloader = new HttpDownloader(zipUrl, savePath, true); downloader.Start(); while (!downloader.IsFinished) { Console.WriteLine("Continue! Now : {0}B/{1}B, {2}%", downloader.DownloadedSize, downloader.TotalSize, downloader.Progress * 100d); Thread.Sleep(50); } Console.WriteLine("Finish! Now : {0}B/{1}B, {2}%", downloader.DownloadedSize, downloader.TotalSize, downloader.Progress * 100d); Assert.True(!File.Exists(savePath + ".download")); Assert.True(File.Exists(savePath)); }
void AltoHttpDemoForm_Load(object sender, EventArgs e) { if (Program.MSG != null) { var url = Program.MSG.Url; txtUrl.Text = url; txtUrl.Enabled = false; var defaultFolder = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); var defaultFileName = "default.unknown"; var defaultSavePath = Path.Combine(defaultFolder, defaultFileName); downloader = new HttpDownloader(url, defaultSavePath); downloader.StatusChanged += downloader_StatusChanged; downloader.DownloadInfoReceived += downloader_DownloadInfoReceived; downloader.DownloadCompleted += downloader_DownloadCompleted; downloader.BeforeSendingRequest += downloader_BeforeSendingRequest; downloader.ProgressChanged += downloader_ProgressChanged; downloader.ErrorOccured += downloader_ErrorOccured; btnStart.Enabled = false; btnPuaseOrResume.Enabled = false; downloader.Start(); } }
private void StartBtn_Click(object sender, EventArgs e) { try { // Downloading the file linkToFileFolder.Visible = false; downloader = new HttpDownloader(file, outputpath); downloader.DownloadCompleted += Downloader_DownloadCompleted; downloader.ProgressChanged += Downloader_ProgressChanged; downloader.DownloadInfoReceived += Downloader_DownloadInfoReceived; if (string.IsNullOrEmpty(UrlBox.Text) && string.IsNullOrEmpty(savingTxtbox.Text)) { MessageBox.Show("Fields can't be empty!", "Error"); UrlBox.Focus(); return; } else { downloader.Start(); if (isResume == false) { supportResumeLbl.Text = "No"; PauseBtn.Enabled = false; ResumeBtn.Enabled = false; } else { supportResumeLbl.Text = "Yes"; PauseBtn.Enabled = true; ResumeBtn.Enabled = true; } } } catch (Exception ex) { MessageBox.Show($"An error appear: {ex.Message}", "Erorr", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
protected internal override void Start() { // construct the url var url = new StringBuilder(); url.Append(_urlPrefix); if (url[url.Length - 1] != '/') { url.Append('/'); } // zip file name var fileName = string.Format("{0}.{1}-{2}{3}", _packageNamePrefix, _checkVersionHandler.LocalVersion, _checkVersionHandler.RemoteVersion, _packageExtension); url.AppendFormat(fileName); // ���̵�ַ var savePath = Path.Combine(_downloadToPath, fileName); _savePath = savePath; _fullUrl = url.ToString(); _down = new HttpDownloader(_fullUrl, _savePath, true); _down.SetRequsterAsyncHook(_requesterAsyncHook); _down.SetFinishCallback((_) => { if (_.Error != null) { OnError(this, string.Format("{0} : {1}", _fullUrl, _.Error.Message)); } Finish(); }); _down.Start(); }
private void Download() { if (string.IsNullOrEmpty(textBox1.Text)) { MessageBox.Show("Download Url is empty"); return; } var dlg = new SaveFileDialog(); dlg.FileName = "download.dat"; dlg.Filter = "Download File(*.dat)|*.dat|*|*.*"; dlg.FilterIndex = 1; if (dlg.ShowDialog() != DialogResult.OK) { dlg.Dispose(); return; } var file = dlg.FileName; dlg.Dispose(); if (string.IsNullOrEmpty(file)) { return; } downloader_ = new HttpDownloader(); downloader_.download_url = textBox1.Text; downloader_.savefilepath = dlg.FileName; downloader_.update_event += (msg, s, c, t, r) => { if (s == HttpDownloader.Status.kDownloading) { progressBar1.Value = (int)(c * progressBar1.Maximum / t); label2.Text = progressBar1.Value.ToString() + "%"; if (t > 0) { label3.Text = c.ToString() + " / " + t.ToString(); } else { label3.Text = c.ToString(); } label3.Text = label3.Text + " " + r.ToString(); } else if (s == HttpDownloader.Status.kComplete) { progressBar1.Value = progressBar1.Maximum; label2.Text = "Finish"; if (t > 0) { c = t; label3.Text = c.ToString() + " / " + t.ToString(); } else { label3.Text = c.ToString(); } button1.Text = "Download"; downloader_.Dispose(); downloader_ = null; } else if (s >= HttpDownloader.Status.kAborted) { label2.Text = s.ToString(); } }; button1.Text = "Abort"; downloader_.Start(); }
private async void Button_Click(object sender, RoutedEventArgs e) { MinecraftVersion version = _verList.SelectedItem as MinecraftVersion; if (version == null) { return; } ViewModel.isWorking = true; try { string jsonPath = CoreManager.CoreMCL.Core.GameRootPath + "\\" + version.GetJsonPath(); using (HttpClient client = new HttpClient()) { FileInfo file = new FileInfo(jsonPath); if (!file.Directory.Exists) { file.Directory.Create(); } File.Create(jsonPath).Dispose(); File.WriteAllText(jsonPath, await client.GetStringAsync(version.url)); string jarPath; KMCCC.Launcher.Version kver = CoreManager.CoreMCL.Core.GetVersion(version.id); jarPath = CoreManager.CoreMCL.Core.GameRootPath + "\\" + version.GetJarPath(); file = new FileInfo(jarPath); if (!file.Directory.Exists) { file.Directory.Create(); } File.Create(jarPath); HttpDownloader downloader = new HttpDownloader(kver.Downloads.Client.Url, jarPath); var progressController = await MainWindow.Current.ShowProgressAsync("正在下载: " + kver.Id, "", true, DefaultDialogSettings); downloader.DownloadProgressChanged += async delegate { if (downloader.ProgressInPercent == 100) { await progressController.CloseAsync(); } else { progressController.SetProgress(downloader.ProgressInPercent / 100); progressController.SetMessage("下载速度: " + GetDownloadSpeedFriendlyText(downloader)); } }; progressController.Canceled += delegate { if (downloader.State != DownloadState.Completed) { downloader.Cancel(); } }; downloader.Start(); } } catch (IOException ex) { await MainWindow.Current.ShowMessageAsync("下载失败", ex.Message + ex.StackTrace); } catch (HttpRequestException ex) { await MainWindow.Current.ShowMessageAsync("下载失败", ex.Message + ex.StackTrace); } ViewModel.isWorking = false; }
private async Task TestWithSize(long size) { var rd = new Random((int)(DateTime.Now.Ticks % int.MaxValue)); var targetBytes = new byte[size]; rd.NextBytes(targetBytes); int port = 8080; using (var server = new FakeHttpServer(port, targetBytes)) { var folderProvider = new FakeFolderProvider(); var cacheProvider = new FakeCacheProvider(); var bufferProvider = new FakeBufferProvider(); var downloader = new HttpDownloader( new DownloadTask( "test-task", new HttpTarget( new Uri($"http://localhost:{port}/"), "test-file" ), "test-destination-file", "test-destination-folder", DateTime.Now, false ), folderProvider, cacheProvider, bufferProvider ); downloader.Start(); TimeSpan cancellationStep = TimeSpan.FromSeconds(1); CancellationTokenSource completeTokenSource = new CancellationTokenSource(); downloader.StatusChanged += async(sender, newStatus) => { switch (downloader.Status) { case DownloaderStatus.Running: var step = cancellationStep; cancellationStep *= 2; await Task.Delay(step); if (downloader.CanCancel) { downloader.Cancel(); } break; case DownloaderStatus.Ready: downloader.Start(); break; case DownloaderStatus.Completed: completeTokenSource.Cancel(); break; case DownloaderStatus.Pending: break; case DownloaderStatus.Disposed: break; case DownloaderStatus.Error: throw downloader.Errors.First(); default: throw new Exception($"unknown status {downloader.Status}"); } }; try { await Task.Delay(TimeSpan.FromMinutes(5), completeTokenSource.Token); } catch (TaskCanceledException) { } Assert.AreEqual(downloader.Status, DownloaderStatus.Completed); if (downloader.Result is StorageFile file) { using (var istream = await file.OpenReadAsync()) { using (var ostream = new MemoryStream(targetBytes)) { Assert.IsTrue(istream.AsStream().Compare(ostream)); } } } await downloader.Result.DeleteAsync(); await downloader.DisposeAsync(); } }