【问题标题】:node.js -- provide direct link for google drive filenode.js -- 为谷歌驱动文件提供直接链接
【发布时间】:2019-02-08 08:45:50
【问题描述】:

在这个网站上使用另一个答案,我能够找到这个 curl 脚本:

#!/bin/bash
fileid="0Bz-w5tutuZIYY3h5YlMzTjhnbGM"
filename="MyFile.tar.gz"
curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${fileid}" > /dev/null
curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=${fileid}" -o ${filename}

它能够下载大型 Google Drive 文件(显示警告页面)。

此外,我还可以使用pip install gdown 命令:

gdown https://drive.google.com/uc?id=0Bz-w5tutuZIYY3h5YlMzTjhnbGM

pip install youtube-dl 库:

youtube-dl https://drive.google.com/uc?id=0Bz-w5tutuZIYY3h5YlMzTjhnbGM`

我什至可以在 NODE.js 中运行 gdown 脚本:

const {spawn} = require("child_process");
 var g = spawn("gdown", ["https://drive.google.com/uc?id=0Bz-w5tutuZIYY3h5YlMzTjhnbGM"]);
 g.stdout.on('data', (d) => {
    console.log(d.toString()); 
 });

 g.stderr.on('data', (d) => {
    console.log(d.toString()); 
 });

 g.on('close', (d) => {
    console.log("closed with: " + d.toString()); 
 });

问题:

我希望能够使用 Google Drive 来托管网站的大文件,为此我需要能够生成直接下载链接。我正在考虑向 mynodewebsite/GOOGLE_DRIVE_LINK 发出 GET 请求,甚至向 node.js 服务器发出套接字请求,要求它获取链接,然后等待生成的链接响应。

但是,虽然我可以使用上述方法慢慢下载文件,但我怎样才能简单地将 / 直接返回到文件的链接?我是否需要将google驱动文件下载到node.js服务器上,等待它完成处理,然后将该文件的路径返回给客户端,然后再将其删除?这会破坏大文件的目的,因为我想使用 Google Drive 作为完整的托管...

那么我怎样才能简单地返回直接的 Google 云端硬盘下载链接而不是下载整个内容?

编辑:

当我尝试打开新创建的项目时:

【问题讨论】:

  • 根据this site,显然你不能,你可以去onedrive/dropbox
  • 您想检索直接链接以下载 Google 云端硬盘中的共享大文件。如果我的理解是正确的,那么使用 API 密钥怎么样?使用API​​ key时,直接链接变成https://www.googleapis.com/drive/v3/files/### fileId ###?alt=media&key=### API key ###,因为可以使用Drive API。因为我不确定这是否是您想要的,所以我将其发布为评论。如果这不是您想要的,我很抱歉。
  • @Tanaike 谢谢,我会调查一下,这是否允许您在无需验证应用程序的情况下访问它?
  • @bluejayke 是的。您可以直接使用端点下载文件。例如,当您将包含 API 密钥的端点放到自己的浏览器中时,由于 GET 方法,您可以直接下载文件。
  • @Tanaike 嗨,你能指导我到你可以在没有验证的情况下设置 API 密钥的链接吗?我在看developers.google.com/drive/api/v3/install,看来你需要验证一下……

标签: python node.js google-drive-api nodes


【解决方案1】:

当您想要检索直接链接以下载 Google Drive 中的共享大文件时,您可以使用 API 密钥使用端点。端点如下。

https://www.googleapis.com/drive/v3/files/### fileId ###?alt=media&key=### API key ###

您可以使用端点作为直接链接并下载文件。

参考资料:

【讨论】:

  • 谢谢!顺便说一句,对于其他任何人:一旦您拥有 API 密钥,只需复制文件夹的公共 ID 并将其插入此处:googleapis.com/drive/v3/files?q=%27{YOUR FOLDER ID}%27+in+parents&key={YOUR API KEY} 没有括号,然后用 nodeJS 或其他任何东西获取数据,你就有了一个网站!
  • @bluejayke 感谢您提供更多信息。
  • 嗨顺便说一句,当我尝试使用简单的节点获取技术获取此页面的内容时,需要很长时间(从基本 JSON 的 4000 毫秒到特定文件的 35000 毫秒),看看我的新问题:stackoverflow.com/questions/54666261/…
  • @bluejayke 在我目前的情况下,我无法很快找到问题并回答,因为我从未经历过这种情况。对于我糟糕的技能和经验,我深表歉意。
  • @bluejayke,非常感谢!这些字符花了我几天的时间——在 api explorer 页面上它可以工作,但在邮递员上却不行。但现在没事了。真的谢谢你!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-18
  • 1970-01-01
  • 2022-01-19
相关资源
最近更新 更多