如何在 firebase 存储上上传多个文件并将访问 url 和元数据作为 json 或 csv 文件获取? [关闭]

Posted

技术标签:

【中文标题】如何在 firebase 存储上上传多个文件并将访问 url 和元数据作为 json 或 csv 文件获取? [关闭]【英文标题】:How to upload a multiple files on firebase storage and get the access urls and metadata as as json or a csv file? [closed] 【发布时间】:2021-07-22 14:35:23 【问题描述】:

作为一名 android 开发人员,这是一个让我很困惑的问题。

我有大约 5000 个 mp3 文件要添加到不同文件夹中的 Firebase 存储中。 到现在为止,我一直在从浏览器中添加文件,并简单地将 URL 复制并粘贴到 firestore 中,然后在我的 android 项目中使用它们。

现在我需要上传这么多文件,我怎么能得到

    文件的网址 这真的很重要,我需要找到一种方法来获取上传文件的 url,我不想最终手动执行此操作。

    文件的元数据,实际上只是持续时间。 如果这对于一些带有 firebase 的插件服务是可行的,那么它将真的很有帮助,或者我可以在我的计算机上运行一些第三方应用程序。

请帮忙。

【问题讨论】:

Firebase 为各种平台提供 SDK。编写一个小应用程序来读取本地文件,将它们上传到存储并将 url 存储在 Firestore 中并不难。事实上,最后一部分已在入门指南Upload Files 中介绍。这是 Swift 指南,还有其他平台的指南。 【参考方案1】:

一种可能的方法是使用 Cloud Function 生成签名 URL 并获取文件的元数据并将这些信息存储在 Firestore 文档中。

以下 Cloud Function 代码为上传到默认存储桶的每个文件创建一个 Firestore 文档,该文档具有自动生成的 ID 和包含文件名的字段 fileName

exports.saveFileDetails = functions.storage.object().onFinalize(async object => 

    try 
        const bucket = admin.storage().bucket(object.bucket);
        const file = bucket.file(object.name);

        const signedURLconfig =  action: 'read', expires: '08-12-2035' ;

        const signedURLArray = await file.getSignedUrl(signedURLconfig);
        const url = signedURLArray[0];

        const metadata = await file.getMetadata();

        return admin.firestore().collection('...').add( signedURL: signedURLArray[0], metadata: metadata[0], fileName: object.name );

     catch (error) 
        console.log(error);
        return null;
    

);

请注意,您可以使用文件名值作为 Firestore 文档的 ID,如果您确定它遵循 constraints on document IDs。

【讨论】:

【参考方案2】:

要有效地做到这一点,您可以使用 admin-sdk 创建一个节点应用程序,该应用程序将读取指定文件夹的文件结构并在处理每个文件时记录输出。

Get started with the admin-sdk Loop through files and process them Storage with the Admin sdk

NPM 包读取视频长度

Option 1 Option 2

用于管理 CSV 格式的 NPM 包

Option 1 Option 2

【讨论】:

以上是关于如何在 firebase 存储上上传多个文件并将访问 url 和元数据作为 json 或 csv 文件获取? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

从多个文件上传 Firebase 存储中获取下载 url

如何按选择的顺序将多个文件上传到 Firebase 存储?

在 Flutter 中访问 Firebase 存储

如何从 Android 上的 Firebase 存储正确下载多个文件?

如何将多个文件上传到 Firebase?

将图片从 URL 上传到 Firebase 存储