Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从Google Drive下载文件_C#_Google Drive Api - Fatal编程技术网

C# 如何从Google Drive下载文件

C# 如何从Google Drive下载文件,c#,google-drive-api,C#,Google Drive Api,我目前正在尝试制作一个从谷歌硬盘下载文件的应用程序 在Google Drive SDK文档中,我找到了一个示例方法,该方法应返回System.IO.Stream对象 为此,它需要每个文件的下载URL。 但是,并不总是指定并返回此下载URL。有人知道这是为什么吗?我能做些什么呢 更新:我发现我可以使用exportURL。这些几乎总是由服务返回 下面的问题:如何以特定用户的身份运行应用程序?=>有时,应用程序向url发出请求,然后请求超时。当我在浏览器中尝试相同的URL时,它就像一个符咒 谢谢 如

我目前正在尝试制作一个从谷歌硬盘下载文件的应用程序

在Google Drive SDK文档中,我找到了一个示例方法,该方法应返回System.IO.Stream对象

为此,它需要每个文件的下载URL。 但是,并不总是指定并返回此下载URL。有人知道这是为什么吗?我能做些什么呢

更新:我发现我可以使用exportURL。这些几乎总是由服务返回

下面的问题:如何以特定用户的身份运行应用程序?=>有时,应用程序向url发出请求,然后请求超时。当我在浏览器中尝试相同的URL时,它就像一个符咒


谢谢

如果您试图下载的文件是本机google docs格式,则不会有下载链接。如果是这种情况,您必须查找exportLinks


您将有多个导出链接,因此您必须选择最适合您的格式:例如文档的docx或odt

可能会很晚,但我刚刚使用以下代码从Google Drive下载:

var stream = service.HttpClient.GetStreamAsync(downloadUrl);
        var result = stream.Result;
        using (var fileStream = System.IO.File.Create(filePath))
        {
            result.CopyTo(fileStream);
        }

我刚才在我的问题中输入了同样的内容:)但是现在我有另一个问题。有时请求超时,我真的不知道为什么,因为导出链接可以工作,为什么我在浏览器中尝试它们。我从未经历过任何超时。不过,会发生随机服务器错误。你应该实现指数退避,驱动器API文档中有一个例子,我已经将这个答案标记为正确答案,因为它帮助我进一步了解。谢谢你能告诉我应该添加什么库来获取“service.HttpClient.GetStreamAsync(downloadUrl);”?@Santarkantos,在Sando的示例中,“service”是DriveService的一个实例,它来自googledriveapi。您可以使用NuGet并搜索Google.api.Drive.v2将库拉入项目中。