我正在尝试将文件上传到谷歌驱动器并监控上传进度。我正在使用 .net 和 api v2。
我使用的是 DriveService.Files.Insert 方法,它给了我一个 FilesResource.InsertMediaUpload,然后我使用 ProgressChanged 事件来列出进度。问题是这个事件只被调用了 3 次:“开始”、“上传”、“完成”状态。我想在“上传”状态下打很多电话。
这是我的代码:
private UploadToGoogle(...)
{
//Consider I have an populated File and MemoryStream:
MemoryStream contentStream = /*Populated memoryStream*/;
File body = /*Populated file*/;
FilesResource.InsertMediaUpload uploadRequest = null;
try
{
contentStream.Position = 0;
uploadRequest = driveService.Files.Insert(body, contentStream, body.MimeType);
uploadRequest.ProgressChanged += new Action<Google.Apis.Upload.IUploadProgress>(UploadProgessEvent);
Action asyncAction = () =>
{
uploadRequest.Upload();
Console.WriteLine("Completed!");
};
var thread = new System.Threading.Thread(new System.Threading.ThreadStart(asyncAction));
thread.Start();
}catch(Exception) {}
}
互联网上有一些关于旧 API 中的 ResumableUpload 类的内容,但不知道如何在 v2 中使用它。我在 Google.Apis.Upload 命名空间中找到了 ResumableUpload 类,但它是抽象的,我不知道如何使用它。
我在文档中没有发现任何关于进度监控的有用信息:https ://developers.google.com/drive/manage-uploads
而且我真的不想通过WebRequest使用可恢复上传,有没有办法在.net sdk中实现它......