我使用Node.js,我的service.api.export出错了。 我的console.log发给我:正在下载“Manuel Utilisation.pdf ......” 下载了“Manuel Utilisation.pdf”!但是我的浏览器没有我的下载,我有这个错误: {错误:导出仅支持Google文档。}
在调用此函数之前,我使用我的bdd中的令牌执行setcredentiel。
我使用此函数下载带有idFile的文件:
function downloadFiles(auth, fileId) {
drive.files.get({fileId: fileId }, function (err, metadata) {
if (err) {
console.error("Error GET files :" + err);
return process.exit();
}
console.log('Downloading %s...', metadata.name);
var dest = fs.createWriteStream(metadata.name);
drive.files.export({fileId: fileId, mimeType: 'application/pdf'}).on('error', function (err) {
console.log('Error downloading file', err);
process.exit();
}).pipe(dest);
dest.on('finish', function () {
console.log('Downloaded %s!', metadata.name);
return true
}).on('error', function (err) {
console.log('Error writing file', err);
return false;
});
});
你知道吗?我该如何解决这个错误?
答案 0 :(得分:0)
看起来对stderr
的调用会引发错误。幸运的是,您只需拨打drive.files.export
,而不是drive.files.get
。根据{{3}}中的示例,您的函数应如下所示。请注意,该示例未提供您尝试下载的文件的元数据。它可能会传递给'on error'函数。
drive.files.export
答案 1 :(得分:0)
我花了一些时间弄清楚这一点,终于有了一个下载功能可以工作(当前在控制台中打印):
function download(auth){
const drive = google.drive({version: 'v3', auth})
var request = drive.files.export({
fileId: '_____fileid______',
mimeType: 'text/html'
}, {alt: 'media'}, (err, result) => {
if (err) console.log(err)
else console.log(result)
})
};
答案 2 :(得分:0)
在Nodejs中,此代码可将文件从Google驱动器下载到给定的目的地。 downloadedfileName是下载后提供的文件的名称。 PresentationId是Google驱动器文件的ID
const downloadFile = async(auth,downloadedfileName,presentationId)=>{
return new Promise((resolve, reject) => {
const dest = fs.createWriteStream(downloadedfileName);
const drive = google.drive({version: 'v3', auth});
drive.files.get({fileId: presentationId, alt: 'media'}, {responseType: 'stream'},
function(err, res){
res.data
.on('end', () => {
resolve(downloadedfileName)
})
.on('error', err => {
reject('Error');
})
.pipe(dest);
}
);
});
}```