Ảnh/video bạn đã tải lên
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Một số phương thức API hỗ trợ việc tải nội dung nghe nhìn lên ngoài nội dung thông thường.
Trong trường hợp đó, phương thức yêu cầu thông thường sẽ bị quá tải để có thêm
Stream
để tải lên.
Tổng quan
Đối với mọi Stream
mà bạn muốn tải lên, bạn nên sử dụng phần tử resumable
tải nội dung đa phương tiện lên, cho phép tải luồng lên ở các phần nhỏ hơn.
Điều này đặc biệt hữu ích nếu bạn đang chuyển các tệp lớn,
và khả năng gián đoạn mạng hoặc một số hoạt động truyền khác
lỗi ở mức cao.
Trình quản lý này cũng có thể giúp giảm mức sử dụng băng thông trong trường hợp xảy ra sự cố mạng
vì bạn không phải bắt đầu lại quá trình tải tệp lớn lên từ đầu.
Tải lên nội dung nghe nhìn có thể tiếp tục là một tính năng trong thư viện ứng dụng .NET API của Google
kể từ phiên bản 1.2.0-beta.
Thư viện dành riêng cho API của Google chứa các phương thức thuận tiện để
tương tác với tính năng này.
Ví dụ: giao thức tải lên nội dung nghe nhìn có thể tiếp tục được mô tả trên
trang tải nội dung nghe nhìn lên cho API Drive.
Lớp quan tâm chính là
ResumableUpload
.
Trong cách triển khai này, nội dung đa phương tiện được tải lên theo từng phần.
Kích thước phân đoạn mặc định là 10MB, nhưng bạn có thể thay đổi kích thước này bằng
đặt thuộc tính ChunkSize
trên yêu cầu thành bội số của 256KB bất kỳ.
Nếu xảy ra lỗi máy chủ trong yêu cầu, thì thuật toán thời gian đợi luỹ thừa
chính sách này được dùng để gửi lại các byte chưa được tải lên thành công.
Theo mặc định, thuật toán thời gian đợi luỹ thừa được bật cho mỗi yêu cầu ứng dụng.
Bạn có thể thay đổi hành vi mặc định khi tạo
một đối tượng dịch vụ mới bằng cách thay đổi
Thuộc tính DefaultExponentialBackOffPolicy
trên BaseClientService.Initializer
và/hoặc đặt
HttpClientInitializer
với hoạt động triển khai IConfigurableHttpClientInitializer
của riêng bạn
để thêm một số chính sách thời gian đợi.
Đã xác định các phương thức hỗ trợ tải nội dung nghe nhìn lên
trong tài liệu tham khảo tài liệu dành riêng cho API.
Đối với các phương thức API này, hãy tiện lợi Upload
và
Thêm các phương thức UploadAsync
.
Các phương thức đó mất một Stream
để tải lên và loại nội dung của nó làm tham số.
Đảm bảo rằng vị trí của luồng bạn tải lên là 0, nếu không bạn sẽ nhận được lỗi, chẳng hạn như
"System.InvalidOperationException: Không tìm thấy tiêu đề đã cho".
Xin lưu ý rằng do hành vi của HttpClient
của khung
nếu quá trình tải lên hết thời gian chờ, thì hệ thống sẽ gửi TaskCanceledException
.
Nếu bạn thấy trường hợp ngoại lệ này, hãy cân nhắc việc tăng thuộc tính Timeout
theo cách thủ công trong
ứng dụng mà đối tượng dịch vụ của bạn sử dụng.
Mã mẫu
// 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");
Trừ phi có lưu ý khác, nội dung của trang này được cấp phép theo Giấy phép ghi nhận tác giả 4.0 của Creative Commons và các mẫu mã lập trình được cấp phép theo Giấy phép Apache 2.0. Để biết thông tin chi tiết, vui lòng tham khảo Chính sách trang web của Google Developers. Java là nhãn hiệu đã đăng ký của Oracle và/hoặc các đơn vị liên kết với Oracle.
Cập nhật lần gần đây nhất: 2025-07-26 UTC.
[null,null,["Cập nhật lần gần đây nhất: 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```"]]