Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js node js从URL获取Zip并上传到Google drive_Node.js_Url_Request_Google Drive Api - Fatal编程技术网

Node.js node js从URL获取Zip并上传到Google drive

Node.js node js从URL获取Zip并上传到Google drive,node.js,url,request,google-drive-api,Node.js,Url,Request,Google Drive Api,我正在尝试从url获取zip文件,以便在下一步将其上载到Google drive。但是我的代码不起作用 //从url获取zip文件的方法 函数getFile(){ var file=请求({ 方法:“获取”, url:“https://start.spring.io/starter.zip", 编码:null/ 您想从URL下载一个zip文件并将其上载到您的Google驱动器 您希望通过Node.js使用googleapis实现这一点 您已经能够使用驱动器API获取并放置文件 如果我的理解是

我正在尝试从url获取zip文件,以便在下一步将其上载到Google drive。但是我的代码不起作用

//从url获取zip文件的方法
函数getFile(){
var file=请求({
方法:“获取”,
url:“https://start.spring.io/starter.zip",
编码:null/
  • 您想从URL下载一个zip文件并将其上载到您的Google驱动器
  • 您希望通过Node.js使用googleapis实现这一点
  • 您已经能够使用驱动器API获取并放置文件
如果我的理解是正确的,这次修改怎么样

修改点:
  • 通过
    请求
    从URL检索的值可用于上载
  • 从URL检索到的值已上载为缓冲区。因此,请将其转换为readstream类型
当上述各点反映到脚本中时,它将变成如下所示

async function uploadFile(auth) {
  const stream = require("stream"); // In this script, use this module.

  const buffer = await getFile();
  const bs = new stream.PassThrough();
  bs.end(buffer);

  const drive = google.drive({ version: "v3", auth });
  var fileMetadata = {
    name: "demo.zip"
  };
  var media = {
    mimeType: "application/zip",
    body: bs // Modified
  };
  drive.files.create(
    {
      resource: fileMetadata,
      media: media,
      fields: "id"
    },
    function(err, res) {
      if (err) {
        // Handle error
        console.log(err);
      } else {
        console.log("File Id: ", res.data.id);
      }
    }
  );
}
修改脚本: 参考资料:

在我的环境中,我可以确认修改后的脚本是否有效。但如果我误解了您的问题,并且这不是您想要的结果,我很抱歉。

它有效!非常感谢您的详细回复!@Klaus Kledan感谢您的回复。我很高兴您的问题得到了解决。
async function uploadFile(auth) {
  const stream = require("stream"); // In this script, use this module.

  const buffer = await getFile();
  const bs = new stream.PassThrough();
  bs.end(buffer);

  const drive = google.drive({ version: "v3", auth });
  var fileMetadata = {
    name: "demo.zip"
  };
  var media = {
    mimeType: "application/zip",
    body: bs // Modified
  };
  drive.files.create(
    {
      resource: fileMetadata,
      media: media,
      fields: "id"
    },
    function(err, res) {
      if (err) {
        // Handle error
        console.log(err);
      } else {
        console.log("File Id: ", res.data.id);
      }
    }
  );
}