当前位置: 首页 > 知识库问答 >
问题:

将firebase存储与Admin sdk node.js一起使用

吴欣悦
2023-03-14

我想使用AdminSDK使用firebase存储,因为使用gcd需要付费帐户。

我曾尝试过在没有付费帐户的情况下使用gcd,但除了使用gcd存储非常复杂之外,我没有找到一种方法。

我试图在Firebase留档中找到答案,但提到的功能留档根本不起作用。所以我决定发布这个问题的答案,这样它就可以帮助其他人

共有1个答案

夏侯元忠
2023-03-14

毕竟,我找到了一种使用AdminSDK使用firebase存储上传和下载文件的方法

首先,您应该安装Firebase-admin

npm安装--保存firebase管理员

我不记得是否必须安装@firebase/storage

让我们先来了解一下您必须启动的代码

var admin = require("firebase-admin");
var firebase = require("firebase");
var serviceAccount = require("path/to/your/private/ket.json");

私钥是从firebaseConsole生成的

firebaseConsole-

现在您可以使用firebase bucket

admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
storageBucket: "{storageBucket}"
});
var bucket = admin.storage().bucket();

您可以在{upload file}按钮旁边找到storageBucket

现在让我们来看看如何将图片上传到我的名为pic的文件夹“你可以使用它而无需制作任何子文件夹”

uploadPic (picName, Picture) => {

db.bucket.upload(Picture.path, {
    destination: "pic/" + picName,
    metadata: {
        contentType: Picture.mimetype,
        cacheControl: 'public, max-age=31536000'
    }
}, (err, file) => {
    if (err) {
        console.log(err);
    } else {
        console.log('done');
    }
    return;
});
};

你需要将所有文件发送到这个函数或路径到你的图片和mimetype有必要的信息,你也需要发送id,所以如果你搜索它,你可以找到它。

此代码用于获取图片URL

let baseUrl = 'https://firebasestorage.googleapis.com/v0/b/'+'{storageBucket }'+'/o/'+'{folderName}'+'%2F';

getPicUrl (pictureName) => {
db.bucket.getFiles({ prefix: 'pic/' + pictureName}).then((file) => {
    var token = file[0][0].metadata.metadata.firebaseStorageDownloadTokens;
    baseUrl = baseUrl + pictureName+ '?alt=media&token=' + token;
    return;
}).catch((err) => {
    console.log(err.message);
});
return baseUrl;
};

此函数将返回下载URL,您可以使用该URL显示或下载此文件

我所知道的一切,我试图用最好的方式解释它,我希望你喜欢它

祝你好运:)

 类似资料:
  • 问题内容: 我正在尝试在我的watchKit应用中使用firebase数据库。我已经在我的iPhone应用程序上开发了此功能,但是发现在我的Watch应用程序上很难做到这一点。当我尝试将firebase导入watch应用程序的VC类中时,它正在创建error 。 可以在Watch app中使用Firebase吗? 问题答案: 可悲的是,没有支持,并由于这样的事实,有没有支持在这些版本中,并高度依赖

  • 我正在使用工作箱来缓存我的应用程序外壳。网络选项卡显示请求来自serviceWorker,并且资产在快速检索时肯定会被缓存,即使在离线模式下也是如此: 但是,缓存存储选项卡始终为空: 我试图通过控制台请求相同的资产: 瞧,资产显示: 我担心我错过了一些基本的东西。 顺便说一下,缓存存储在我的本地环境中显示正确,因此我怀疑这是来自CDN的资产的问题。

  • 有没有办法在Firebase主机上使用Brotli压缩而不是gzip?我知道Firebase会自动压缩它,但到目前为止,它只使用gzip。

  • 问题内容: Jenkins中建立一个托管在bitbucket上的项目时,我将在URL字段中输入什么? 该存储库是私有的。 问题答案: 我对Jenkins并不熟悉,但是Bitbucket允许您通过https克隆git存储库,https可以接受密码作为url的一部分,如下所示:

  • 我是Gradle/Groovy的新手,所以我可能遗漏了一些显而易见的东西。你能帮忙吗? 我们使用Ivy进行依赖管理。我正在试用Gradle,希望与我们现有的常春藤基础设施集成。通常情况下,这应该是可能的,但我们的常春藤的布局有点特别,而且...我不能让它工作。 这是因为我们的常春藤在布局时考虑了组织的url,例如: 我现在试着把这句话翻译成Gradle: 这当然是失败的,因为“[organizat

  • 我有一个名为UserRepository的通用存储库接口。然后我有一个接口,它从MyUserRepository扩展而来。它处理一个MyUser类,该类扩展了User。 我还有一个名为UserService的服务接口和一个名为MyUserServiceImpl的类。 该服务需要UserRepository的实例,我虽然可以使用某种注释,如@Qualifer,但它不起作用。 应用程序无法启动 说明: