2016-08-02 28 views
0

我正在开发一款带有firebase 3,ionic2和Angular2的移动应用程序。 我们将不断创建新的音频文件,这些文件将提供给我们所有订阅的用户,即音频文件不是用户特定的。音频文件以模块形式提供。换言之,订阅的用户只有在该模块中的所有先前文件都已被收听时才能够听取模块中的下一个文件。Firebase承载着不断增长的音频文件数量

Firebase托管似乎不适用于此目的,因为我的理解是,无论何时添加新音频,我们都必须将整个网站上传所有以前和新的音频文件作为内容。这将是令人难以置信的乏味,而不是一个可行的解决方案。 我对这个假设错了吗?我还没有看到任何增量上传托管或FTP访问它。

作为替代方案,我正在考虑使用Firebase存储来托管我们的音频文件。但是,在这种情况下,我不确定如何保护存储。由于我的api密钥必须在源文件(js或html文件)中公开,因此我认为每个订阅用户只需拥有一些js知识即可访问托管我们音频文件的文件夹,然后下载它们。

在托管它们的情况下,我将能够散列文件名并将它们存储在数据库中,从而控制对它们的访问。 但是,使用存储选项似乎不可能,因为人们可以下载文件夹中的所有文件,从而下载整个模块。

什么是最好的方式去做这件事?

+1

如果你想根据用户凭证,以确保在访问存储火力地堡到文件,看https://firebase.google.com/docs/storage/security/ –

回答

0

这一切都取决于您如何将这些音频文件存储在Firebase中。避免以base64格式存储文件,并利用Firebase Storage

会强烈建议使用须─

  1. 火力地堡存储的增量存储的音频文件,并提供 用户提供不间断的流。
  2. 将图像上传到s3和递增地保存在哈希火力与使用arrays-

    变种消息= $ FirebaseArray(REF)的;

    //添加新记录到列表 消息$添加({ 用户: “physicsmarie”, 文字: “Hello World” 的 })。

    //从列表中删除一个项目 消息$ remove(someRecordKey);

    //改变信息并保存它 var item = messages。$ getRecord(someRecordKey); item.user =“alanisawesome”; $ save(item).then(function(){ //数据已保存到我们的数据库 });

+0

是的,我在我的作品说:这就是我正在考虑的。但是,我的问题是如何保护他们。 2.我没有看到S3中托管的图像与手头的问题有关。 – hholtij