Javascript 从firebase存储上的图像动态下载URL以供显示

Javascript 从firebase存储上的图像动态下载URL以供显示,javascript,firebase,react-native,firebase-storage,Javascript,Firebase,React Native,Firebase Storage,我有一大堆已经上传到firebase存储上的图像,我想动态检索这些图像并显示在我的应用程序屏幕中。这就是我迄今为止所做的尝试,但没有成功: 我尝试了API引用中的listFilesAndDirectories函数,该函数导致以下错误: Possible Unhandled Promise Rejection (id: 1): Error: [storage/object-not-found] No object exists at the desired reference. Native

我有一大堆已经上传到firebase存储上的图像,我想动态检索这些图像并显示在我的应用程序屏幕中。这就是我迄今为止所做的尝试,但没有成功:

我尝试了API引用中的listFilesAndDirectories函数,该函数导致以下错误:

 Possible Unhandled Promise Rejection (id: 1):
 Error: [storage/object-not-found] No object exists at the desired reference.
 NativeFirebaseError: [storage/object-not-found] No object exists at the desired reference.
上面的函数打印日志语句“Finished listing”,但不显示图像

我还编写了这个函数,但它不起作用,它在3分钟后输出一个maxDownloadRetryError

 function fetchImage() {
   reference.getDownloadURL().then(
     function(url) {
       console.log(url);
     },
     function(error) {
       console.log(error);
     },
   );
 }

 fetchImage();

错误消息告诉您正在使用的引用位置没有对象。不能将
getDownloadURL()
与非actul file对象的路径一起使用。不能在前缀(文件夹)上使用它

如果您试图为列出的每个对象获取一个下载URL,并且该对象带有
列表文件和目录
,则必须在找到的每个文件对象上调用
getDownloadURL()
(而不只是对整个前缀调用一次)

更像这样:

function listFilesAndDirectories(reference, pageToken) {
  return reference.list({pageToken}).then(result => {
    result.items.forEach(ref => {
      // call getDownloadURL on every object reference
      ref.getDownloadURL().then(url => {
        console.log(`${fullPath}: ${url}`)
      })
    });

    if (result.nextPageToken) {
      return listFilesAndDirectories(reference, result.nextPageToken);
    }

    return Promise.resolve();
  });
}

图像URL被记录到控制台,我面临提取URL并将其作为URI放置在图像中我尝试了模板文字,我尝试调用函数并使用点符号提取URL,但在函数范围外无法访问URL,这听起来像是一个完全不同的问题-请将其发布到新的问题来解释你现在在处理什么。
function listFilesAndDirectories(reference, pageToken) {
  return reference.list({pageToken}).then(result => {
    result.items.forEach(ref => {
      // call getDownloadURL on every object reference
      ref.getDownloadURL().then(url => {
        console.log(`${fullPath}: ${url}`)
      })
    });

    if (result.nextPageToken) {
      return listFilesAndDirectories(reference, result.nextPageToken);
    }

    return Promise.resolve();
  });
}