【问题标题】:How do I create a Storage Reference for dynamic Images in Firebase Storage如何在 Firebase 存储中为动态图像创建存储参考
【发布时间】:2019-01-04 18:37:59
【问题描述】:

我目前正在构建一个目录应用程序,这些目录基本上是我保存在 firebase 存储中的图像。我目前正在使用下面的代码来引用它们。

但是,这些图片需要每周使用新图片进行更新。当我更改 firebase 存储中的图像时,这似乎会为每个图像生成一个新链接。尽管更新了这些特定图像,但我仍在维护它们的名称和文件夹位置。如何在我的应用程序中实现这一点,而无需更改我的应用程序中的代码“图像链接”?

是否可以引用尽管内容更改但仍保留的文件名?总之,我想在我的应用程序中创建一个不需要更改的存储参考,尽管我更改了 Firebase 存储中的图像内容?如果您有这样的实现,请分享一些代码 sn-ps。谢谢

ViewPager viewPager;
ViewPagerAdapter adapter;

private String[] images = {
        "https://firebasestorage.googleapis.com/v0/b/zamcatalog.appspot.com/o/Game%2Fgame1.jpg?alt=media&token=b3917686-090f-43fb-852e-0365ac67dd6e",
        "https://firebasestorage.googleapis.com/v0/b/zamcatalog.appspot.com/o/Game%2Fgame2.jpg?alt=media&token=25e4eb76-5361-42a6-9bfd-6e3b1153611f",
        "https://firebasestorage.googleapis.com/v0/b/zamcatalog.appspot.com/o/Game%2Fgame3.jpg?alt=media&token=a5d4c8b9-9ecb-4ea1-a095-557955db1d19",
        "https://firebasestorage.googleapis.com/v0/b/zamcatalog.appspot.com/o/Game%2Fgame4.jpg?alt=media&token=b4598019-13b3-4600-aa49-86fd0a8c5c64",
        "https://firebasestorage.googleapis.com/v0/b/zamcatalog.appspot.com/o/Game%2Fgame5.jpg?alt=media&token=a4991bfe-d3b4-4f1c-be65-55ddfd1de7ba",
        "https://firebasestorage.googleapis.com/v0/b/zamcatalog.appspot.com/o/Game%2Fgame6.jpg?alt=media&token=e8b43bb6-c967-495f-b5e2-336f082225b6",
        "https://firebasestorage.googleapis.com/v0/b/zamcatalog.appspot.com/o/Game%2Fgame7.jpg?alt=media&token=0f135b82-1a05-4585-a511-bbab35a5613a",
        "https://firebasestorage.googleapis.com/v0/b/zamcatalog.appspot.com/o/Game%2Fgame8.jpg?alt=media&token=ab8a9fcf-db2d-4c9c-afd8-969a4db22a8c"
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_game);

    viewPager = (ViewPager)findViewById(R.id.viewpager);
    adapter = new ViewPagerAdapter(gameActivity.this,images);
    viewPager.setAdapter(adapter);
}

}"

【问题讨论】:

  • 我不明白您所说的“当我更改 firebase 存储中的图像时,这似乎会为每个图像生成一个新链接”。
  • 上传新图片后,它会有另一个独特的链接。这需要我更改上面代码中的链接。一家商店每周都有不同的目录。我希望能够在不更改 APP 中的任何代码的情况下仅更改 firebase 存储中的图像。
  • 所以您是说当您更改存储中的文件时,为其生成的先前下载 URL 不再有效?
  • 是的,因为它会生成一个新链接
  • 我仍然不明白您所说的“它将生成一个新链接”是什么意思。除非您为此编写一些代码,否则会生成链接。您何时生成此链接?

标签: firebase firebase-realtime-database google-cloud-firestore firebase-storage firebaseui


【解决方案1】:

我认为您应该考虑传递云存储位置 (gs://bucket-name/folders...\imageName.jpg) 而不是下载 URL。只要您不更改文件名或文件夹位置,此存储位置就不应更改。您可以使用 Firebase 存储 API 通过云存储位置访问您的文件/图像:

// Create a reference to a file from a Google Cloud Storage URI
StorageReference gsReference = storage.getReferenceFromUrl("gs://bucket/images/stars.jpg");

我强烈建议您阅读 Cloud Storage for Firebase 文档: https://firebase.google.com/docs/storage/android/start https://firebase.google.com/docs/storage/android/download-files

【讨论】:

    猜你喜欢
    • 2020-11-01
    • 1970-01-01
    • 2019-09-05
    • 2018-01-21
    • 2016-10-17
    • 2019-04-25
    • 2018-07-22
    • 2019-06-10
    • 2017-08-10
    相关资源
    最近更新 更多