Downloader 1.0.6
See the version list below for details.
dotnet add package Downloader --version 1.0.6
NuGet\Install-Package Downloader -Version 1.0.6
<PackageReference Include="Downloader" Version="1.0.6" />
paket add Downloader --version 1.0.6
#r "nuget: Downloader, 1.0.6"
// Install Downloader as a Cake Addin #addin nuget:?package=Downloader&version=1.0.6 // Install Downloader as a Cake Tool #tool nuget:?package=Downloader&version=1.0.6
Downloader
🚀 Fast and reliable multipart downloader with .Net Core 3.1+ supprting 🚀
Downloader is a modern, fluent, asynchronous, testable and portable library for .NET. This is a multipart downloader with asynchronous progress events.
This library written in .Net Standard 2
and you can add that in your .Net Core
or .Net Framework
projects.
Sample Console Application
How to use
Get it on NuGet:
PM> Install-Package Downloader
Or via the .NET Core command line interface:
dotnet add package Downloader
Create your custom configuration:
var downloadOpt = new DownloadConfiguration()
{
ParallelDownload = true, // download parts of file as parallel or not
BufferBlockSize = 10240, // usually, hosts support max to 8000 bytes
ChunkCount = 8, // file parts to download
MaxTryAgainOnFailover = int.MaxValue, // the maximum number of times to fail.
OnTheFlyDownload = true, // caching in-memory mode
Timeout = 1000 // timeout (millisecond) per stream block reader
};
So, declare download service instance per download and pass config:
var downloader = new DownloadService(downloadOpt);
Then handle download progress and completed events:
downloader.DownloadProgressChanged += OnDownloadProgressChanged;
downloader.ChunkDownloadProgressChanged += OnChunkDownloadProgressChanged;
downloader.DownloadFileCompleted += OnDownloadFileCompleted;
Finally, start the download asynchronously. For example, download a .zip file:
var file = @"Your_Path\fileName.zip";
downloader.DownloadFileAsync("https://file-examples.com/fileName.zip", file);
// or
await downloader.DownloadFileTaskAsync("https://file-examples.com/fileName.zip", file);
For resume from last download, store downloader.Package
object and execute like this:
downloader.DownloadFileAsync(package);
// or
await downloader.DownloadFileTaskAsync(package);
Note: for complete sample see
Downloader.Sample
project from this repository.
Features at a glance
- Download files async and non-blocking.
- Cross-platform library to download any files with any size.
- Get real-time progress info of each block.
- Download file multipart as parallel.
- Handle any client-side or server-side exception none-stopping the downloads.
- Config your
ChunkCount
to define the parts count of the download file. - Download file multipart as in-memory mode or cache in temp.
- Store download package object to resume the download when you want.
- Get download speed or progress percentage in each progress event.
- Get download progress events per chunk downloads
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
NuGet packages (10)
Showing the top 5 NuGet packages that depend on Downloader:
Package | Downloads |
---|---|
Wabbajack.Networking.Http
Package Description |
|
SquareMinecraftLauncher.Core
BaiBaoStudio |
|
EasyUpdate
Easy Update 提供简单的自动更新服务。 |
|
Orobouros
A fully-featured and modular online scraper tool. Yes we know the name is spelled wrong. Icon Credit: Hyliian @ DeviantArt |
|
Dove.Avalonia.Extensions.WebView
WebView Extensions for Avalonia. |
GitHub repositories (21)
Showing the top 5 popular GitHub repositories that depend on Downloader:
Repository | Stars |
---|---|
2dust/v2rayN
A GUI client for Windows and Linux, support Xray core and sing-box-core and others
|
|
rocksdanister/lively
Free and open-source software that allows users to set animated desktop wallpapers and screensavers powered by WinUI 3.
|
|
goatcorp/FFXIVQuickLauncher
Custom launcher for FFXIV
|
|
yaobiao131/downkyicore
哔哩下载姬(跨平台版)downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等)。
|
|
Paving-Base/APK-Installer
An Android Application Installer for Windows
|
Version | Downloads | Last updated | |
---|---|---|---|
3.3.1 | 2,901 | 11/28/2024 | |
3.3.0 | 1,220 | 11/20/2024 | |
3.2.1 | 4,792 | 10/4/2024 | |
3.2.0 | 1,463 | 9/22/2024 | |
3.1.2 | 21,421 | 6/30/2024 | |
3.1.0-beta | 743 | 1/2/2024 | |
3.0.6 | 86,070 | 6/6/2023 | |
3.0.5 | 397 | 6/3/2023 | |
3.0.4 | 48,432 | 3/11/2023 | |
3.0.3 | 4,590 | 1/29/2023 | |
3.0.2 | 1,158 | 1/7/2023 | |
3.0.1 | 5,288 | 11/2/2022 | |
3.0.0-beta | 195 | 10/12/2022 | |
2.4.1 | 12,152 | 9/21/2022 | |
2.4.0 | 1,073 | 9/16/2022 | |
2.3.9 | 521 | 9/14/2022 | |
2.3.8 | 888 | 9/5/2022 | |
2.3.7 | 1,741 | 8/23/2022 | |
2.3.6 | 645 | 8/20/2022 | |
2.3.5 | 79,360 | 5/6/2022 | |
2.3.4 | 1,219 | 5/3/2022 | |
2.3.3 | 5,454 | 2/23/2022 | |
2.3.2 | 1,485 | 1/24/2022 | |
2.3.1 | 643 | 1/2/2022 | |
2.3.0 | 5,136 | 11/15/2021 | |
2.2.9 | 10,471 | 8/12/2021 | |
2.2.8 | 36,347 | 4/1/2021 | |
2.2.7 | 717 | 3/31/2021 | |
2.2.6 | 3,787 | 3/26/2021 | |
2.2.5 | 1,032 | 3/24/2021 | |
2.2.4 | 686 | 3/19/2021 | |
2.2.3 | 2,874 | 3/1/2021 | |
2.2.2 | 805 | 2/24/2021 | |
2.2.1 | 397 | 2/23/2021 | |
2.2.0 | 426 | 2/22/2021 | |
2.1.4 | 411 | 2/21/2021 | |
2.1.3 | 379 | 2/19/2021 | |
2.1.2 | 555 | 2/14/2021 | |
2.1.1 | 413 | 2/14/2021 | |
2.1.0 | 440 | 2/10/2021 | |
2.0.9 | 467 | 2/4/2021 | |
2.0.8 | 518 | 2/3/2021 | |
2.0.7 | 609 | 1/24/2021 | |
2.0.6 | 447 | 1/13/2021 | |
2.0.5 | 495 | 1/10/2021 | |
2.0.4 | 649 | 1/5/2021 | |
2.0.3 | 447 | 1/2/2021 | |
2.0.1 | 605 | 12/19/2020 | |
2.0.0 | 637 | 12/6/2020 | |
1.9.9 | 707 | 12/1/2020 | |
1.9.8 | 447 | 12/1/2020 | |
1.9.7 | 545 | 11/12/2020 | |
1.9.6 | 488 | 11/11/2020 | |
1.9.5 | 563 | 11/11/2020 | |
1.9.4 | 567 | 10/24/2020 | |
1.9.3 | 489 | 10/19/2020 | |
1.9.2 | 469 | 10/12/2020 | |
1.9.1 | 525 | 9/28/2020 | |
1.9.0 | 558 | 9/27/2020 | |
1.8.0 | 858 | 7/31/2020 | |
1.7.0 | 772 | 7/17/2020 | |
1.6.0 | 540 | 7/14/2020 | |
1.5.0 | 533 | 7/6/2020 | |
1.4.0 | 614 | 7/4/2020 | |
1.3.0 | 964 | 6/21/2020 | |
1.2.1 | 607 | 6/21/2020 | |
1.2.0 | 583 | 6/16/2020 | |
1.1.0 | 567 | 5/29/2020 | |
1.0.9 | 591 | 5/16/2020 | |
1.0.8 | 536 | 5/11/2020 | |
1.0.7 | 577 | 5/3/2020 | |
1.0.6 | 533 | 4/22/2020 | |
1.0.5 | 526 | 4/21/2020 | |
1.0.4 | 560 | 4/16/2020 | |
1.0.3 | 662 | 3/28/2020 | |
1.0.2 | 556 | 3/28/2020 | |
1.0.1 | 1,131 | 3/28/2020 |
Fixed System.Net.Security exception for SslStream disposing problem