Downloader 1.5.0
See the version list below for details.
dotnet add package Downloader --version 1.5.0
NuGet\Install-Package Downloader -Version 1.5.0
<PackageReference Include="Downloader" Version="1.5.0" />
paket add Downloader --version 1.5.0
#r "nuget: Downloader, 1.5.0"
// Install Downloader as a Cake Addin #addin nuget:?package=Downloader&version=1.5.0 // Install Downloader as a Cake Tool #tool nuget:?package=Downloader&version=1.5.0
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()
{
MaxTryAgainOnFailover = int.MaxValue, // the maximum number of times to fail.
ParallelDownload = true, // download parts of file as parallel or notm default value is false
ChunkCount = 8, // file parts to download, default value is 1
Timeout = 1000, // timeout (millisecond) per stream block reader, default valuse is 1000
OnTheFlyDownload = false, // caching in-memory or not? default valuse is true
BufferBlockSize = 10240, // usually, hosts support max to 8000 bytes, default valuse is 8000
MaximumBytesPerSecond = 1024 * 1024, // download speed limited to 1MB/s, default valuse is zero or unlimited
RequestConfiguration = // config and customize request headers
{
Accept = "*/*",
UserAgent = $"DownloaderSample/{Assembly.GetExecutingAssembly().GetName().Version.ToString(3)}",
ProtocolVersion = HttpVersion.Version11,
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate,
KeepAlive = false,
UseDefaultCredentials = false
}
};
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";
var url = @"https://file-examples.com/fileName.zip";
await downloader.DownloadFileAsync(url, file);
For resume from last download, store downloader.Package
object and execute like this: (For more detail see StopResumeOnTheFlyDownloadTest test method)
var pack = downloader.Package;
download.CancelAsync(); // Stopping after some second from the start of downloading.
await downloader.DownloadFileAsync(pack); // Resume download from stopped point.
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
orin-temp files
cache mode. - 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
- Stop and Resume your downloads with package object
- Set a speed limit on 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 (19)
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 v2fly 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.2.1 | 3,233 | 10/4/2024 | |
3.2.0 | 1,347 | 9/22/2024 | |
3.1.2 | 18,151 | 6/30/2024 | |
3.1.0-beta | 732 | 1/2/2024 | |
3.0.6 | 78,973 | 6/6/2023 | |
3.0.5 | 387 | 6/3/2023 | |
3.0.4 | 42,704 | 3/11/2023 | |
3.0.3 | 4,439 | 1/29/2023 | |
3.0.2 | 1,111 | 1/7/2023 | |
3.0.1 | 5,261 | 11/2/2022 | |
3.0.0-beta | 186 | 10/12/2022 | |
2.4.1 | 12,099 | 9/21/2022 | |
2.4.0 | 1,038 | 9/16/2022 | |
2.3.9 | 511 | 9/14/2022 | |
2.3.8 | 879 | 9/5/2022 | |
2.3.7 | 1,712 | 8/23/2022 | |
2.3.6 | 638 | 8/20/2022 | |
2.3.5 | 79,256 | 5/6/2022 | |
2.3.4 | 1,208 | 5/3/2022 | |
2.3.3 | 5,434 | 2/23/2022 | |
2.3.2 | 1,464 | 1/24/2022 | |
2.3.1 | 634 | 1/2/2022 | |
2.3.0 | 5,093 | 11/15/2021 | |
2.2.9 | 10,333 | 8/12/2021 | |
2.2.8 | 34,842 | 4/1/2021 | |
2.2.7 | 708 | 3/31/2021 | |
2.2.6 | 3,778 | 3/26/2021 | |
2.2.5 | 1,021 | 3/24/2021 | |
2.2.4 | 677 | 3/19/2021 | |
2.2.3 | 2,867 | 3/1/2021 | |
2.2.2 | 795 | 2/24/2021 | |
2.2.1 | 387 | 2/23/2021 | |
2.2.0 | 415 | 2/22/2021 | |
2.1.4 | 403 | 2/21/2021 | |
2.1.3 | 370 | 2/19/2021 | |
2.1.2 | 546 | 2/14/2021 | |
2.1.1 | 405 | 2/14/2021 | |
2.1.0 | 431 | 2/10/2021 | |
2.0.9 | 460 | 2/4/2021 | |
2.0.8 | 509 | 2/3/2021 | |
2.0.7 | 601 | 1/24/2021 | |
2.0.6 | 439 | 1/13/2021 | |
2.0.5 | 486 | 1/10/2021 | |
2.0.4 | 641 | 1/5/2021 | |
2.0.3 | 437 | 1/2/2021 | |
2.0.1 | 595 | 12/19/2020 | |
2.0.0 | 624 | 12/6/2020 | |
1.9.9 | 699 | 12/1/2020 | |
1.9.8 | 439 | 12/1/2020 | |
1.9.7 | 537 | 11/12/2020 | |
1.9.6 | 480 | 11/11/2020 | |
1.9.5 | 554 | 11/11/2020 | |
1.9.4 | 557 | 10/24/2020 | |
1.9.3 | 481 | 10/19/2020 | |
1.9.2 | 459 | 10/12/2020 | |
1.9.1 | 517 | 9/28/2020 | |
1.9.0 | 550 | 9/27/2020 | |
1.8.0 | 848 | 7/31/2020 | |
1.7.0 | 764 | 7/17/2020 | |
1.6.0 | 531 | 7/14/2020 | |
1.5.0 | 525 | 7/6/2020 | |
1.4.0 | 606 | 7/4/2020 | |
1.3.0 | 955 | 6/21/2020 | |
1.2.1 | 598 | 6/21/2020 | |
1.2.0 | 574 | 6/16/2020 | |
1.1.0 | 559 | 5/29/2020 | |
1.0.9 | 581 | 5/16/2020 | |
1.0.8 | 524 | 5/11/2020 | |
1.0.7 | 568 | 5/3/2020 | |
1.0.6 | 524 | 4/22/2020 | |
1.0.5 | 517 | 4/21/2020 | |
1.0.4 | 551 | 4/16/2020 | |
1.0.3 | 653 | 3/28/2020 | |
1.0.2 | 550 | 3/28/2020 | |
1.0.1 | 1,123 | 3/28/2020 |
Fixed some issues