这是来自访问Google Drive v3的Node.js v8.9.4应用程序。
以下基于Google API文档的服务器端代码(如下所示)从Google云端硬盘获取PDF文件,并将其正确写入服务器上的/downloads/test.pdf。
https://developers.google.com/drive/v3/web/manage-downloads
const TOKEN_DIR = (process.env.HOME || process.env.HOMEPATH || process.env.USERPROFILE) + '/downloads/';
const TOKEN_PATH = TOKEN_DIR + 'test.pdf';
var dest = fs.createWriteStream(TOKEN_PATH);
gdrive.files.get({
auth: oauthclient,
fileId: id,
alt: 'media'
})
.on('end', function () {
console.log('Success');
})
.on('error', function (err) {
console.log('Error during download', err);
})
.pipe(dest);
我想要做的是在响应中发送PDF文件内容,以便将其下载到浏览器中。以下代码导致响应w /正确的标头返回到浏览器但不下载PDF。查看Chrome调试器,响应正文中似乎没有任何数据。
response.writeHead(200, {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': 'X-Requested-With',
'Content-Type': 'application/pdf',
'Content-Disposition':'attachment; filename="test1.pdf"'
});
gdrive.files.get({
auth: oauthclient,
fileId: id,
alt: 'media'
})
.on('end', function () {
console.log('Success');
response.end();
})
.on('error', function (err) {
console.log('Error during download', err);
})
.pipe(response);
我错过了什么吗?
答案 0 :(得分:-1)
如果您要下载文件,我建议files.export。这就是我使用的。您还可以查看Download Files。它表示,如果您使用 files.get ,则应该在URI中加入alt=media
。