Google云平台在node.js中上传图片

问题描述 投票:0回答:1

我正在尝试使用谷歌平台API将图像上传到node.js中的firebase存储,这是我的代码:

function upload_file(filename, buffer) {
    let file = bucket.file(filename);
    console.log(`file created: ${filename}`);
    file.save(buffer)
    .then(() => {
        console.log(`${filename} should be in bucket now`);
        return file.bucket.upload(filename);
    })
    .then((data) => {
        console.log(`upload succeed: ${filename}`);
    }).catch((err) => {
        console.log(err);
    });
}

这是输出:

file created: 7CD5F2FA-CB2F-4014-BB65-3BBC3D8B3254.jpg
7CD5F2FA-CB2F-4014-BB65-3BBC3D8B3254.jpg should be in bucket now
{ Error: ENOENT: no such file or directory, stat '7CD5F2FA-CB2F-4014-BB65-3BBC3D8B3254.jpg'
    at Error (native)
  errno: -2,
  code: 'ENOENT',
  syscall: 'stat',
  path: '7CD5F2FA-CB2F-4014-BB65-3BBC3D8B3254.jpg' }

我检查了我的水桶,我确实找到了刚刚上传的图像。但是,错误表示无法找到该文件。我怎样才能解决这个问题?

node.js firebase google-cloud-storage
1个回答
0
投票

你的代码让我很困惑。看起来它正试图上传两次。

首先,您正在调用file.save(),其记录为:

将任意数据写入文件。

这是一个包装File#createWriteStream的便捷方法。

然后你打电话给bucket.upload(),记录如下:

将文件上传到存储桶。这是一个包装File#createWriteStream的便捷方法。

所以,我带走的是你两次调用File#createWriteStream。这没有意义。

此外,此代码没有意义:

return file.bucket.upload(filename);

由于File没有名为bucket的属性。我希望这段代码只是因为这个事实而失败。

我认为是时候更多地研究云存储API以确保您做的正确。

© www.soinside.com 2019 - 2024. All rights reserved.