作为一名 Android 开发者,这是一个令我困惑的问题。
我有大约 5000 个 mp3 文件,我想将它们添加到不同文件夹中的 firebase 存储中。 到目前为止,我一直在从浏览器添加文件,只需复制并粘贴 Firestore 中的网址,然后在我的 Android 项目中使用它们。
现在我需要上传这么多文件,我怎样才能得到
文件的网址 这非常重要,我需要找到一种方法来获取上传文件的网址,我不想最终手动执行此操作。
文件的元数据,实际上只是持续时间。 如果这可以通过 firebase 的某些插件服务实现,那么它将非常有帮助,或者我可以在我的计算机上运行一些第三方应用程序。
请帮忙。
一种可能的方法是使用 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;
}
});
请注意,如果您确定文件名值遵循文档 ID 的约束,则可以使用文件名值作为 Firestore 文档的 ID。
为了有效地做到这一点,您可以使用 admin-sdk 创建一个节点应用程序,它将读取指定文件夹的文件结构并在处理每个文件时记录输出。
NPM 包读取视频长度
用于管理 CSV 格式的 NPM 包