【问题标题】:Download file from google drive using c# without google API使用没有谷歌 API 的 c# 从谷歌驱动器下载文件
【发布时间】:2016-01-28 08:38:29
【问题描述】:

根据要求,客户端提供了一个exe-(其中包含要下载的文件的url)如果我们使用google api,我们需要在exe中提供额外的引用。客户端不允许。

我使用 webclient 下载文件,但它下载的文件类型为 HTML。我的要求是下载文件形式的谷歌驱动器不使用谷歌 API。有什么办法吗?

我试过下面的代码

 WebClient wb = new WebClient();          
 wb.DownloadFile("https://drive.google.com/file/d/0BzpAdEg-KyDjNVVSb0FBOWQ4V0k/view?usp=sharing", @"C:\TFS\test\test.pdf");

结果如下图

【问题讨论】:

  • 好奇心比什么都大,但你有什么理由不使用 api 吗?
  • @Takarii:根据要求,客户端提供一个 exe-(其中包含要下载的文件的 url)如果我们使用 google api,我们需要提供额外的引用以及可执行程序。客户端不允许。
  • 我认为你的问题在于链接本身没有直接链接到文件。该链接仅指向您可以选择文件本身的位置。
  • 要绕过其他引用,您可以尝试将它们嵌入到 exe - stackoverflow.com/questions/189549/… - 是否符合要求?
  • @Takarii 我也很好奇。我很想知道客户用来要求一个文件和一个文件的技术推理。如果有人不小心移动或取消共享文档,我也很想知道他们的计划是什么。无论哪种方式,URL 都会改变。

标签: c# asp.net exe


【解决方案1】:

这应该对你有帮助。

以下是 google drive 的标准分享网址。

https://drive.google.com/file/d/FILE_ID/edit?usp=sharing

您需要用于直接下载的格式是:

https://drive.google.com/uc?export=download&id=FILE_ID

这将直接链接到文件,而不是当前示例中的驱动器视图。

例如,如果您的分享网址是https://drive.google.com/file/d/ABCDEFG1234567/edit?usp=sharing

那么你的直接下载地址是https://drive.google.com/uc?export=download&id=ABCDEFG1234567

注意,这仅适用于您自己上传的文件,这些文件不是使用 google 文档在驱动器本身中创建的(即文档、演示文稿、电子表格)。要做到这一点,格式会发生变化(如果需要,会更新答案)

编辑:

值得注意的是,如果文件位置发生变化,那么 url 和直接下载链接也会发生变化,这意味着你需要更新它。

【讨论】:

  • 它对我不起作用,即使我将它转换为下载 url。我正在尝试使用 C# WebClient.DownloadFile() 下载加密的文本文件和 exe 文件。
  • @PabitraDash 那么你的 URL 格式一定有错误
  • 网址如下。它总是以 HTML 格式下载,但它是一个加密的文本文件。 drive.google.com/…
  • @PabitraDash 但您没有进行手动下载。正如我已经说过的那样格式化 URL。
  • 我只按照您的说明格式化了网址,但仍然无法正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-10
  • 2018-01-12
  • 1970-01-01
  • 2016-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多