【问题标题】:Google cloud platform upload image in node.js谷歌云平台在node.js中上传图片
【发布时间】:2017-12-31 17:25:28
【问题描述】:

我正在尝试使用谷歌平台 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】:

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

    首先,您调用的是file.save(),记录为:

    将任意数据写入文件。

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

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

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

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

    另外,这段代码没有意义:

    return file.bucket.upload(filename);
    

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

    我认为是时候进一步研究 Cloud Storage API 以确保您做的是正确的事情。

    【讨论】:

      猜你喜欢
      • 2020-11-15
      • 2018-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-02
      • 2019-02-27
      • 1970-01-01
      相关资源
      最近更新 更多