使用Google drive v3 C#sdk恢复中断的上传

时间:2017-08-13 17:28:13

标签: c# google-drive-api

我想使用Google Drive v3 C#SDK恢复中断的可恢复上传。 我想要这个的原因是在Restful Web API中创建可恢复的上传。 此RestAPI中有google drive api实例,因此这会将块数据从客户端程序转发到Google驱动器。 如您所知,客户端程序无法一次将整个文件数据上传到Web API,因此我们需要恢复中断的可恢复上传。

所以我的计划就在这里。

  • 首先,我们需要创建上传会话并接收会话URI。
  • 其次,每次从返回的URI创建上传实例并添加块数据。
  • 第三,重复第二个过程直到EOF。

为此,我制作了测试代码,但它根本不起作用。

var uploadStream = new System.IO.FileStream(UploadFileName, System.IO.FileMode.Open,
            System.IO.FileAccess.Read);
var insert = service.Files.Create(new Google.Apis.Drive.v3.Data.File { Name = title }, uploadStream, ContentType);

Uri uploadUri = insert.InitiateSessionAsync().Result;

int chunk_size = ResumableUpload.MinimumChunkSize;
while (uploadStream.Length != uploadStream.Position)
{
    byte[] temp = new byte[chunk_size];
    uploadStream.Read(temp, 0, temp.Length);
    MemoryStream stream = new MemoryStream(temp);

    ResumableUpload resume_uploader = ResumableUpload.CreateFromUploadUri(uploadUri, stream);

    resume_uploader.ChunkSize = chunk_size;
    IUploadProgress ss =  resume_uploader.Resume();

    Console.WriteLine("Uploaded " + ss.BytesSent.ToString());
}   

坦率地说,我希望收到308 Resume Incomplete Code,但结果却不同。

"无效的请求。根据Content-Range标头,上传的最终大小为262144字节。这与先前请求中指定的1193188字节的预期大小不匹配。"

这意味着我需要创建使用Google Drive C#SDK恢复中断的可恢复上传的代码。

任何人都可以帮助我?

1 个答案:

答案 0 :(得分:2)

最后,我解决了问题。确切的代码如下。实际上,我在Google上找不到任何源代码,所以我很伤心。每个想要解决此问题的开发人员都请使用我的代码。希望你好好的。 :)

man get_string