【问题标题】:Uploading fire to Firebase Storage using firebase-admin in Node在 Node 中使用 firebase-admin 将火上传到 Firebase 存储
【发布时间】:2020-04-10 21:37:02
【问题描述】:

我需要使用 firebase-admin 将文件从 Node 脚本上传到我的 Firebase 存储。

这就是我在浏览器中的操作方式:(IT WORKS)

// THIS IS INSIDE A FUNCTION
const storageRef = firebase.storage().ref('my-images/' + fileName);
const uploadTask = storageRef.put(file,metadata);

这就是我尝试在 Node 脚本中执行的操作:

const admin = require('firebase-admin');
admin.initializeApp();

// THIS IS INSIDE A FUNCTION
const storageRef = admin.storage().ref('my-images/' + fileName);
const uploadTask = storageRef.put(file,metadata);

我收到 错误:

TypeError: admin.storage(...).ref is not a function

我也试过了:

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  storageBucket: "MY_BUCKET.appspot.com"
});

// THIS IS INSIDE A FUNCTION
const storageRef = admin.storage().bucket().ref('my-images/' + fileName);
const uploadTask = storageRef.put(file,metadata);

我收到 错误:

TypeError: admin.storage(...).bucket(...).ref is not a function

问题

我需要将文件保存在my-images 文件夹内的默认存储桶中。正确的做法是什么?

【问题讨论】:

    标签: node.js firebase google-cloud-storage firebase-storage firebase-admin


    【解决方案1】:

    对于Google Cloud Storage Node.js Client,您需要使用与 JavaScript SDK 不同的方法。

    更准确地说,需要使用Bucketupload()方法,如下:

    bucket.upload('my-images/' + fileName).then(function(data) {
      const file = data[0];
    });
    

    您将在文档中找到更多示例(上面的链接)

    【讨论】:

    • 谢谢! DOC 指定 upload 方法需要 pathString TYPE string,它被描述为 “您希望上传到存储桶的文件的完全限定路径。” 这是否意味着该文件需要保存在我的文件系统中?我不能使用脚本变量中的文件(Blob、缓冲区、Uint8Array)吗?我问这个是因为我在上传之前从另一个来源下载文件。
    • 在这种情况下,如果我没记错的话,你可以使用文件的createWriteStream() 方法。
    • 你是对的。 createWriteStream() 完成了这项工作!我已经对其进行了测试,并且可以正常工作。谢谢!
    猜你喜欢
    • 2021-07-30
    • 2019-08-02
    • 2020-05-07
    • 2020-11-21
    • 2021-07-24
    • 1970-01-01
    • 2020-05-09
    • 2018-07-06
    • 2019-07-22
    相关资源
    最近更新 更多