【问题标题】:unable to make folders in firebase storage bucket - firebase admin无法在 firebase 存储桶中创建文件夹 - firebase 管理员
【发布时间】:2020-05-09 05:09:14
【问题描述】:

在我的情况下,我有一个 Url 列表,我想从这些 url 下载每个文件并将其组织到 firebase 存储桶中,我的问题是我无法通过 nodejs javascript/ 在 firebase 存储桶中创建文件夹打字稿。

firebase 存储提供了 ref() 和 child 方法来上传子文件夹中的文件(请参阅this),但是 firebase 只为 firebase 客户端库提供这些方法,并不是我们不能在 nodejs 中使用客户端库,而是它们当您在 nodejs 中连接 firebase 客户端库时隐藏了一些命名空间,而存储就是其中之一(请参阅this)。

我很高兴他们分别考虑了前端和后端,因为前端和后端在安全性和用例方面有完全不同的场景,所以他们真正写在 nodejs 中使用的是 firebase admin,我看不到 ref他们所说的官方文档中的子方法和子方法是this 不是任何其他方式来命名我正在上传的文件,也不是任何使文件夹进入子目录的方法,当我从计算机上传文件时,它会保存在存储桶中root 与它在我的计算机中的文件名同名,即使我可以从 firebase 控制台手动创建文件夹,但它不会满足我的要求,肯定应该有任何方法以编程方式创建文件夹。

我也尝试使用谷歌云存储库const {Storage} = require('@google-cloud/storage'); ,但事实证明,firebase admin 和 gogole 云库共享相同的文档,并且至少在上传文件部分具有相同的界面。

好吧,我已经度过了我的一天(因为现在是凌晨 4:46,所以我也度过了一夜)尝试不同的库并深入研究他们的文档,我还发现这些文档几乎没有杂乱无章且缺乏代码示例。

任何帮助将不胜感激,到目前为止,我的代码 sn-p 来自他们的文档并正确上传文件:

import "firebase/firestore"

admin.initializeApp({
    credential: admin.credential.cert("./../path-to-service account-cert.json"),
    databaseURL: 'gs://bilal-assistant-xxxxx.appspot.com'
});
const quran_bucket = admin.storage().bucket("quran-bucket");

quran_bucket.upload("./my_computer_path/fatiha.mp3", {
    gzip: true,
    metadata: {
        cacheControl: 'public, max-age=31536000',
    }
}).then(uploadResponse => {
    console.log(` uploaded complete.`);
}).catch((reason: any) => {
    console.log("reason: ", reason);
})

我只想将音频文件保存在文件夹存储桶中,而不是存储桶根目录中

【问题讨论】:

  • 云存储只是没有文件夹。您不能创建或删除一个。它所拥有的是看起来像它们具有文件夹结构的文件路径,这可以帮助您考虑内容的组织方式。它还可以帮助您在控制台中导航您的内容。但是那里没有文件夹。您可以在 Stack Overflow 上找到很多关于此的讨论。
  • 说了这么多,你的代码有什么问题?有错误吗?除了您的预期之外,它还有什么作用?
  • 问题是我想将fatiha.mp3保存在firebase存储中的audio/juz30/fatiha.mp3等文件夹中

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


【解决方案1】:

根据 API 文档,upload()UploadOptions 对象作为第二个参数。您将希望使用该对象的记录在案的destination 属性来指定存储中文件的名称:

quran_bucket.upload("./my_computer_path/fatiha.mp3", {
    destination: 'audio/juz30/fatiha.mp3',
    gzip: true,
    metadata: {
        cacheControl: 'public, max-age=31536000',
    }
})

您可能不想打扰 gzip 和 mp3,因为它已经压缩并且不会进一步压缩。

【讨论】:

    猜你喜欢
    • 2019-04-27
    • 2021-04-05
    • 2016-10-06
    • 2018-01-28
    • 2019-04-25
    • 1970-01-01
    • 2019-02-04
    • 2021-03-06
    • 2021-04-27
    相关资源
    最近更新 更多