Importer du contenu multimédia
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Plusieurs méthodes d'API permettent d'importer des contenus multimédias en plus d'un corps standard.
Dans ce cas, la méthode de requête standard est surchargée pour obtenir une valeur
Stream
à importer.
Présentation
Pour chaque Stream
que vous souhaitez importer, vous devez utiliser l'option avec reprise
l'importation multimédia, qui permet d'importer
des flux en plus petits morceaux.
Cela est particulièrement utile si vous
transférez des fichiers volumineux,
et la probabilité d'une interruption
du réseau ou d'une autre transmission
le taux d'échec est élevé.
Cela peut également réduire l'utilisation de la bande passante en cas de défaillance du réseau.
car vous n'avez pas besoin de redémarrer
les importations de fichiers volumineux depuis le début.
L'importation de fichiers multimédias avec reprise était une fonctionnalité de la bibliothèque cliente .NET des API Google.
depuis la version 1.2.0-beta.
Les bibliothèques propres à l'API Google contiennent des méthodes pratiques
interagissant avec
cette fonctionnalité.
Le protocole d'importation de supports avec reprise est décrit, par exemple, sur le
page d'importation de contenu multimédia pour l'API Drive.
La principale catégorie d'intérêt est
ResumableUpload
Dans cette implémentation, le contenu multimédia est importé en fragments.
La taille de segment par défaut est de 10 Mo, mais vous pouvez la modifier
en définissant la propriété ChunkSize
dans la requête sur un multiple de 256 Ko.
Si une erreur de serveur se produit dans une requête, l'intervalle exponentiel entre les tentatives
est utilisée pour renvoyer les octets qui n'ont pas été correctement importés.
Par défaut, l'intervalle exponentiel entre les tentatives est activé pour chaque requête client.
Vous pouvez modifier le comportement par défaut lorsque vous créez
un nouvel objet de service en modifiant
<ph type="x-smartling-placeholder"></ph>
Propriété DefaultExponentialBackOffPolicy
sur BaseClientService.Initializer
et/ou en définissant
<ph type="x-smartling-placeholder"></ph>
HttpClientInitializer
à votre propre implémentation de IConfigurableHttpClientInitializer
.
qui ajoute une règle d'intervalle entre les tentatives.
Les méthodes compatibles avec l'importation de fichiers multimédias
dans la documentation de référence spécifique aux API.
Pour ces méthodes d'API, les options Upload
et
Ajout de méthodes UploadAsync
.
Ces méthodes ont besoin d'un Stream
pour l'importation et de son type de contenu en tant que paramètres.
Assurez-vous que le flux que vous mettez en ligne est placé à 0, sinon vous recevrez un message d'erreur du type
"System.InvalidOperationException: The provided header could not found" (Système.InvalidOperationException : l'en-tête donné est introuvable).
Notez qu'en raison du comportement du HttpClient
du framework,
, si l'importation expire, une exception TaskCanceledException
est générée.
Si cette exception s'affiche, envisagez d'augmenter manuellement la propriété Timeout
dans
le client utilisé par votre objet de service.
Exemple de code
// Create the service using the client credentials.
var service = new DriveService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "Application_Name"
});
using var uploadStream = System.IO.File.OpenRead("Local_File_Name");
// Create the File resource to upload.
Google.Apis.Drive.v3.Data.File driveFile = new Google.Apis.Drive.v3.Data.File
{
Name = "Drive_File_Name"
};
// Get the media upload request object.
FilesResource.CreateMediaUpload insertRequest = service.Files.Create(
driveFile, uploadStream, "image/jpeg");
// Add handlers which will be notified on progress changes and upload completion.
// Notification of progress changed will be invoked when the upload was started,
// on each upload chunk, and on success or failure.
insertRequest.ProgressChanged += Upload_ProgressChanged;
insertRequest.ResponseReceived += Upload_ResponseReceived;
await insertRequest.UploadAsync();
static void Upload_ProgressChanged(IUploadProgress progress) =>
Console.WriteLine(progress.Status + " " + progress.BytesSent);
static void Upload_ResponseReceived(Google.Apis.Drive.v3.Data.File file) =>
Console.WriteLine(file.Name + " was uploaded successfully");
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/26 (UTC).
[null,null,["Dernière mise à jour le 2025/07/26 (UTC)."],[[["\u003cp\u003eSome API methods allow uploading media using resumable media upload, enabling the transfer of large files in smaller chunks, reducing bandwidth usage, and minimizing interruptions.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eResumableUpload\u003c/code\u003e class facilitates resumable media uploads with a default chunk size of 10MB, adjustable to multiples of 256KB, and includes exponential backoff for error handling.\u003c/p\u003e\n"],["\u003cp\u003eConvenience methods \u003ccode\u003eUpload\u003c/code\u003e and \u003ccode\u003eUploadAsync\u003c/code\u003e are available for API methods supporting media upload, accepting a stream and its content type as parameters, ensuring the stream's position is at 0 to avoid errors.\u003c/p\u003e\n"],["\u003cp\u003eConsider increasing the \u003ccode\u003eHttpClient\u003c/code\u003e timeout property to prevent \u003ccode\u003eTaskCanceledException\u003c/code\u003e during prolonged uploads, as demonstrated in the provided sample code.\u003c/p\u003e\n"],["\u003cp\u003eResumable media upload functionality is accessible through the Google API .NET client library, offering detailed documentation and progress tracking capabilities.\u003c/p\u003e\n"]]],[],null,["# Upload Media\n\nSeveral API methods support uploading media in addition to a regular body.\nIn that case, the regular request method is overloaded to get an additional\n`Stream` to upload.\n\nOverview\n--------\n\n\nFor any `Stream` you wish to upload, you should use resumable\nmedia upload, which allows streams to be uploaded in smaller chunks.\nThis is especially useful if you are transferring large files,\nand the likelihood of a network interruption or some other transmission\nfailure is high.\nIt can also reduce your bandwidth usage in the event of network failures\nbecause you don't have to restart large file uploads from the beginning.\n\nResumableMediaUpload\n--------------------\n\n\nResumable Media Upload has been a feature in the Google API .NET client library\nsince 1.2.0-beta.\nThe Google API-specific libraries contain convenience methods for\ninteracting with this feature.\n\n\nThe resumable media upload protocol is described, for example, on the\n[media upload page for the Drive API](https://developers.google.com/drive/manage-uploads#resumable).\nThe main class of interest is\n[`ResumableUpload`](https://googleapis.dev/dotnet/Google.Apis/latest/api/Google.Apis.Upload.ResumableUpload.html).\nIn this implementation, the media content is uploaded in chunks.\n\n\nThe default chunk size is 10MB, but you can change it by\nsetting the `ChunkSize` property on the request to any multiple of 256KB.\nIf a server error is encountered in a request then exponential backoff\npolicy is used to resend the bytes that were not successfully uploaded.\nBy default, exponential backoff is enabled for each client request.\nYou can change the default behavior when you construct\na new service object by changing the\n[`DefaultExponentialBackOffPolicy`](https://googleapis.dev/dotnet/Google.Apis/latest/api/Google.Apis.Services.BaseClientService.Initializer.html#Google_Apis_Services_BaseClientService_Initializer_DefaultExponentialBackOffPolicy) property on `BaseClientService.Initializer`\nand/or setting the\n[`HttpClientInitializer`](https://googleapis.dev/dotnet/Google.Apis/latest/api/Google.Apis.Services.BaseClientService.Initializer.html#Google_Apis_Services_BaseClientService_Initializer_HttpClientInitializer)\nproperty to your own implementation of `IConfigurableHttpClientInitializer`\nthat adds some backoff policy.\n\n\nThe methods that support media upload are identified\nin the reference documentation for the API-specific documentation.\nFor these API methods, convenience `Upload` and\n`UploadAsync` methods are added.\nThose methods take a `Stream` to upload and its content type as parameters.\n\n\nMake sure that the position of the stream you upload is 0, otherwise you will receive an error, such as\n\"System.InvalidOperationException: The given header was not found\".\n\n\nNote that due to the behavior of the framework's `HttpClient`\nclass, if the upload times out, a `TaskCanceledException` is thrown.\nIf you see this exception, consider manually increasing the `Timeout` property in\nthe client used by your service object.\n\nSample Code\n-----------\n\n```gdscript\n// Create the service using the client credentials.\nvar service = new DriveService(new BaseClientService.Initializer()\n{\n HttpClientInitializer = credential,\n ApplicationName = \"Application_Name\"\n});\n\nusing var uploadStream = System.IO.File.OpenRead(\"Local_File_Name\");\n\n// Create the File resource to upload.\nGoogle.Apis.Drive.v3.Data.File driveFile = new Google.Apis.Drive.v3.Data.File\n{\n Name = \"Drive_File_Name\"\n};\n// Get the media upload request object.\nFilesResource.CreateMediaUpload insertRequest = service.Files.Create(\n driveFile, uploadStream, \"image/jpeg\");\n\n// Add handlers which will be notified on progress changes and upload completion.\n// Notification of progress changed will be invoked when the upload was started,\n// on each upload chunk, and on success or failure.\ninsertRequest.ProgressChanged += Upload_ProgressChanged;\ninsertRequest.ResponseReceived += Upload_ResponseReceived;\n\nawait insertRequest.UploadAsync();\n\nstatic void Upload_ProgressChanged(IUploadProgress progress) =\u003e\n Console.WriteLine(progress.Status + \" \" + progress.BytesSent);\n\nstatic void Upload_ResponseReceived(Google.Apis.Drive.v3.Data.File file) =\u003e\n Console.WriteLine(file.Name + \" was uploaded successfully\");\n```"]]