如何从 google 驱动器 api 下载 Node.js 的文件

How to download a file with Node.js from google drive api

如何从 google 驱动器 api

下载文件 Node.js

我不需要任何特别的东西。我只想从 GoogleDrive 下载一个文件,然后将其保存到客户端的给定目录。

app.get("/download",function(req,res){

  const p38290token = new google.auth.OAuth2(CLIENT_ID, CLIENT_SECRET, REDIRECT_URI);
    p38290token.setCredentials({ refresh_token: token.acc });
    const p38290Id = google.drive({
        version: "v3",
        auth: p38290token,
    });
    var dest = fs.createWriteStream("./test.png");
    try {
        p38290Id.files.get({
                fileId: "1daaxy0ymKbMro-e-JnexmGvM4WzW-3Hn",
                alt: "media"
            }, { responseType: "stream" },
            (err, res) => {
                res.data
                    .on("end", () => {
                        console.log("Done");
                    })
                    .on("error", err => {
                        console.log("Error", err);
                    })
               .pipe(dest); // i want to sent this file to client who request to "/download"
            }
        )
    } catch (error) {

    }

})

我想这样做只要有人来 www.xyz.com/download 文件就会自动下载

问题似乎出在这一行:

var dest = fs.createWriteStream("./test.png");

您正在使用旨在与服务器上的文件进行交互的文件系统命令。您的问题清楚地表明您希望 express 将文件内容传递给发出 HTTP 请求的客户端。

为此,您只需使用路由回调函数的 res 参数即可。您在这一行声明它:

app.get("/download",function(req,res){

在你的情况下,我会完全删除 dest 变量,然后简单地 pipe 将文件 res 像这样:

.pipe(dest);

也看看这个 answer