Node.js node js从URL获取Zip并上传到Google drive
我正在尝试从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文件的方法
函数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);
}
}
);
}