节点Googleapis驱动器获取文件Url与Await



这是我的代码;

await GoogleDriveService.files.get({
fileId: id,
alt: 'media'
}, {
responseType: 'arraybuffer',
encoding: null
}, function(err, response) {
if (err) {
// logger.system.warn(err)
} else {
var imageType = response.headers['content-type'];
var base64 = Buffer(response.data, 'utf8').toString('base64');
var dataURI = 'data:' + imageType + ';base64,' + base64;
return dataURI;
}
});

但等待是行不通的。我正在使用内部函数,函数在dataURI可验证之前返回undefined。我该怎么办?

这是我的全部功能;

const uploadImage = async (filePath,name,mimeType) => {
const response = await GoogleDriveService.files.create({
requestBody: {
name,
mimeType,
},
media: {
mimeType,
body: fs.createReadStream(filePath),
},
}); 

await GoogleDriveService.files.get({
fileId: response.data.id,
alt: 'media'
}, {
responseType: 'arraybuffer',
encoding: null
}, function(err, response) {
var imageType = response.headers['content-type'];
var base64 = Buffer(response.data, 'utf8').toString('base64');
var dataURI = 'data:' + imageType + ';base64,' + base64;
return dataURI;
});
}

await用于promise,它是回调函数的替代。两者都是处理像files.get这样的异步操作的方法。

如果要await结果,则必须从files.get调用中省略第三个参数(回调函数(。

var response = await GoogleDriveService.files.get({
fileId: id,
alt: 'media'
}, {
responseType: 'arraybuffer',
encoding: null
});
var imageType = response.headers['content-type'];
var base64 = Buffer(response.data, 'utf8').toString('base64');
var dataURI = 'data:' + imageType + ';base64,' + base64;
return dataURI;

最新更新