我正在尝试使用google platform 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' }
我检查了我的水桶,我确实找到了刚刚上传的图像。但是,错误表示无法找到该文件。我该如何解决这个问题?
答案 0 :(得分:0)
您的代码让我很困惑。看起来它正试图上传两次。
首先,您正在调用file.save(),其记录为:
将任意数据写入文件。
这是一个包装File#createWriteStream的便捷方法。
然后你打电话给bucket.upload(),记录为:
将文件上传到存储桶。这是一种包装方便的方法 文件#createWriteStream。
所以,我带走的是你两次调用File#createWriteStream。这没有意义。
此外,此代码没有意义:
return file.bucket.upload(filename);
由于File没有名为bucket
的属性。我希望这段代码只是因为这个事实而失败。
我认为现在是时候更多地研究云存储API以确保您做的正确。