小编Yom*_*ius的帖子

从 Drive API v3 下载图像不断会出现损坏的图像。我应该如何解码承诺的响应?

我正在尝试使用 API v3 从 Google 共享驱动器下载图像。下载本身会成功,但看不到图像。从 MacOS 查找器中打开图像只会出现一个旋转窗口。我开始使用文档中的示例(此处:https: //developers.google.com/drive/api/v3/manage-downloads):

const drive = google.drive({version: 'v3', auth});

// ....

var fileId = '0BwwA4oUTeiV1UVNwOHItT0xfa2M';
var dest = fs.createWriteStream('/tmp/photo.jpg');
drive.files.get({
  fileId: fileId,
  alt: 'media'
})
    .on('end', function () {
      console.log('Done');
    })
    .on('error', function (err) {
      console.log('Error during download', err);
    })
    .pipe(dest);  
Run Code Online (Sandbox Code Playgroud)

但是,由于 .on() 方法不存在,因此失败。确切的错误是“TypeError:drive.files.get(...).on 不是函数”

.get() 方法返回一个承诺。Promise 的响应包含数据,根据配置,这些数据可以是流、blob 或数组缓冲区。对于所有选项,当我将响应数据写入文件时,文件本身变得不可见并且大小错误。arraybuffer 示例的实际代码(typescript、node.js)如下。blob 的类似代码(添加了名称和修改日期)和流的代码给出了相同的结果。

        const downloader = googleDrive.files.get({
            fileId: file.id,
            alt: 'media',
        }, {
            responseType: 'arraybuffer',
        });

        return downloader
            .then((response) => {

                const targetFile = …
Run Code Online (Sandbox Code Playgroud)

node.js google-drive-api

3
推荐指数
1
解决办法
1929
查看次数

标签 统计

google-drive-api ×1

node.js ×1