C# 使用google drive api v2.net重新加载

C# 使用google drive api v2.net重新加载,c#,asp.net-mvc,upload,google-drive-api,C#,Asp.net Mvc,Upload,Google Drive Api,我正试图上传一个文件到谷歌硬盘,并监控上传进度。我正在使用带api v2的.net 我使用的是DriveService.Files.Insert方法,该方法为我提供了一个fileresource.InsertMediaUpload,然后我使用ProgressChanged事件列出进度。问题是此事件仅被调用3次:处于“开始”、“上载”、“完成”状态。我想在“上传”状态下有很多电话 这是我的密码: private UploadToGoogle(...) { //Con

我正试图上传一个文件到谷歌硬盘,并监控上传进度。我正在使用带api v2的.net

我使用的是DriveService.Files.Insert方法,该方法为我提供了一个fileresource.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) {}
    }
私有上传日志(…)
{
//假设我有一个填充的文件和内存流:
MemoryStream contentStream=/*填充的MemoryStream*/;
文件正文=/*填充的文件*/;
fileResource.InsertMediaUpload uploadRequest=null;
尝试
{
contentStream.Position=0;
uploadRequest=driveService.Files.Insert(body、contentStream、body.MimeType);
uploadRequest.ProgressChanged+=新操作(UploadProgesEvent);
动作异步动作=()=>
{
uploadRequest.Upload();
Console.WriteLine(“已完成!”);
};
var thread=new System.Threading.thread(new System.Threading.ThreadStart(asyncAction));
thread.Start();
}捕获(异常){}
}
互联网上有一些关于旧API中ResumableUpload类的内容,但不知道如何在v2中使用。我在Google.api.Upload命名空间中找到了ResumableUpload类,但它是抽象的,我不知道如何使用它

我在文档中没有发现任何关于进度监控的有用信息:


我真的不想通过WebRequest使用可恢复上传,有没有办法在.net sdk中实现这一点…

只有在每次将完整数据块发送到API时才会触发
ProgressChanged
事件。如果您减小区块大小,或者文件比默认区块大小大很多,您将看到事件被多次触发。

谢谢!是否可以在使用DriveService.Files.Insert方法完成上载之前获取文件Id?文件Id仅在上载完成时生成并返回