Download Media
Stay organized with collections
Save and categorize content based on your preferences.
Resumable media download has been a feature in the Google API .NET client library since 1.4.0-beta.
The Google API-specific libraries contain convenience methods for interacting with
this feature.
The resumable media download protocol is similar to the resumable media upload protocol which
is described, for example, on the
media upload page for the Drive API.
The main class of interest is
MediaDownloader
.
In this implementation of resumable media download, the media content is downloaded in chunks (chunk size is configurable).
Sample Code
If methods in the API-specific libraries contain the
"supportsMediaDownload
" parameter in the Discovery document,
then the Download
and DownloadAsync
convenience methods are available in the request class.
Those methods download the media data into a Stream
object that you provide. For example:
{
// Create the service using the client credentials.
var storageService = new StorageService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "APP_NAME_HERE"
});
// Get the client request object for the bucket and desired object.
var getRequest = storageService.Objects.Get("BUCKET_HERE", "OBJECT_HERE");
using (var fileStream = new System.IO.FileStream(
"FILE_PATH_HERE",
System.IO.FileMode.Create,
System.IO.FileAccess.Write))
{
// Add a handler which will be notified on progress changes.
// It will notify on each chunk download and when the
// download is completed or failed.
getRequest.MediaDownloader.ProgressChanged += Download_ProgressChanged;
getRequest.Download(fileStream);
}
}
static void Download_ProgressChanged(IDownloadProgress progress)
{
Console.WriteLine(progress.Status + " " + progress.BytesDownloaded);
}
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-03-17 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-03-17 UTC."],[[["\u003cp\u003eThe Google API .NET client library supports resumable media download, allowing for the retrieval of large files in manageable chunks.\u003c/p\u003e\n"],["\u003cp\u003eResumable downloads function similarly to resumable uploads, offering a reliable mechanism for handling interruptions during data transfer.\u003c/p\u003e\n"],["\u003cp\u003eDevelopers can utilize the \u003ccode\u003eMediaDownloader\u003c/code\u003e class and convenient \u003ccode\u003eDownload\u003c/code\u003e/\u003ccode\u003eDownloadAsync\u003c/code\u003e methods within API-specific libraries to initiate and manage these downloads, providing a stream for the received data.\u003c/p\u003e\n"],["\u003cp\u003eThe download process is configurable, enabling customization of chunk size and progress tracking through events like \u003ccode\u003eProgressChanged\u003c/code\u003e for monitoring the transfer status.\u003c/p\u003e\n"]]],[],null,["Resumable media download has been a feature in the Google API .NET client library since 1.4.0-beta.\nThe Google API-specific libraries contain convenience methods for interacting with\nthis feature.\n\n\nThe resumable media download protocol is similar to the resumable media upload protocol which\nis described, for example, on the\n[media upload page for the Drive API](https://developers.google.com/drive/manage-uploads#resumable).\n\n\nThe main class of interest is\n[`MediaDownloader`](https://googleapis.dev/dotnet/Google.Apis/latest/api/Google.Apis.Download.MediaDownloader.html).\nIn this implementation of resumable media download, the media content is downloaded in chunks (chunk size is configurable).\n\nSample Code If methods in the API-specific libraries contain the \"`supportsMediaDownload`\" parameter in the Discovery document, then the `Download` and `DownloadAsync` convenience methods are available in the request class. Those methods download the media data into a `Stream` object that you provide. For example: \n\n```gdscript\n{\n // Create the service using the client credentials.\n var storageService = new StorageService(new BaseClientService.Initializer()\n {\n HttpClientInitializer = credential,\n ApplicationName = \"APP_NAME_HERE\"\n });\n // Get the client request object for the bucket and desired object.\n var getRequest = storageService.Objects.Get(\"BUCKET_HERE\", \"OBJECT_HERE\");\n using (var fileStream = new System.IO.FileStream(\n \"FILE_PATH_HERE\",\n System.IO.FileMode.Create,\n System.IO.FileAccess.Write))\n {\n // Add a handler which will be notified on progress changes.\n // It will notify on each chunk download and when the\n // download is completed or failed.\n getRequest.MediaDownloader.ProgressChanged += Download_ProgressChanged;\n getRequest.Download(fileStream);\n }\n}\n\nstatic void Download_ProgressChanged(IDownloadProgress progress)\n{\n Console.WriteLine(progress.Status + \" \" + progress.BytesDownloaded);\n}\n```"]]