簡體   English   中英

如何從谷歌驅動器 api 下載帶有 Node.js 的文件

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

如何從谷歌驅動器 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 請求的客戶。

為此,您可以只使用路由回調 function 的res參數。您在此行聲明它:

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

在您的情況下,我將完全刪除dest變量,並簡單地將文件pipe刪除到res ,如下所示:

.pipe(dest);

也看看這個答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM