【发布时间】: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