Javascript 为什么我无法获取Firebase存储文件的下载URL?

Javascript 为什么我无法获取Firebase存储文件的下载URL?,javascript,firebase,google-cloud-storage,firebase-storage,Javascript,Firebase,Google Cloud Storage,Firebase Storage,总而言之,用户正在将大量PDF文件上传到存储桶中。上传后,用户可以按下一个按钮,获取所选文件的下载URL,并在新窗口中打开该文件 const storageRef = Storage.ref(`Inbound_Forms/${selectedInbound.id}/${row.FileName}`); storageRef.getDownloadURL().then(url => { window.open(url, '__blank'); }); 打开URL的工作时间约

总而言之,用户正在将大量PDF文件上传到存储桶中。上传后,用户可以按下一个按钮,获取所选文件的下载URL,并在新窗口中打开该文件

const storageRef = Storage.ref(`Inbound_Forms/${selectedInbound.id}/${row.FileName}`);
  storageRef.getDownloadURL().then(url => {
    window.open(url, '__blank');
  });
打开URL的工作时间约为95%,但每隔一段时间,当用户单击按钮打开URL时,就会抛出以下错误:

这会让我相信该文件不存在,但当我在Firebase控制台中打开bucket时,该文件存在,我可以通过控制台中的链接下载该文件:

路径包括:
/Inbound_Forms/5eE2Oytwrpc7FTkmH4gy

目前的解决方案是让用户向我发送一封电子邮件,其中包含指向文件所在页面的链接。然后我在bucket中跟踪原始文件,下载文件,然后上传后缀为“copy”的完全相同的文件,如上图所示。新文件工作正常,原始文件继续抛出相同的错误。我只是通知用户一个副本已经上传,他们可以访问它并继续他们的工作

我已经研究了一些解决方案,但值得一提的是: 1) 文件名有空格。这似乎并没有引起问题,因为即使是我上传的副本也可以正常工作。如前所述,此过程在95%的时间内有效,很多情况下文件名中带有空格。 2) 存储规则。同一个用户可以使用相同的规则打开许多其他文件,包括新上载的副本


目前,我无法重新创建这个bug,因为它很少发生。我感谢advanced中的任何人,感谢他们介绍了这里发生的一切。

如果您收到了该错误,则表示您提供给该文件的路径不存在。如果看不到代码中的实际值并将其与实际值进行比较,我们在这里就无能为力。这可能与空间有关。使用一系列对child()的调用来构建路径,而不是使用字符串连接来构建完整路径。@DougStevenson因此我接受了使用child()创建ref的建议,但它没有改变任何东西
storageRef=Storage.ref().child('Inbound_Forms').child(selectedInbound.id).child(row.FileName)当我注销引用时,无论是使用子创建还是使用模板文本,它们看起来都是完全相同的。最重要的是,我注销了复制文件(参考上图)和原始文件的值,它们没有区别。但是复制URL工作正常,原始URL仍然会抛出与使用child()创建的ref相同的404错误,
Inbound_Forms/5eE2Oytwrpc7FTkmH4gy/Pacific Trans-Tare Sheet不是在错误中抛出了在上面的代码段中生成的值吗,我在这里展示了如何创建存储ref?我还可以提供哪些信息来帮助缩小问题的范围?我们需要能够看到这些变量中每一个的值,并且它们与bucket中文件的路径完全匹配。现在问题中没有足够的信息来准确地核实一切。我建议通过使用不截断任何值的日志语句和图片来明确所有内容。如果出现该错误,则表示提供给文件的路径不存在。如果看不到代码中的实际值并将其与实际值进行比较,我们在这里就无能为力。这可能与空间有关。使用一系列对child()的调用来构建路径,而不是使用字符串连接来构建完整路径。@DougStevenson因此我接受了使用child()创建ref的建议,但它没有改变任何东西
storageRef=Storage.ref().child('Inbound_Forms').child(selectedInbound.id).child(row.FileName)当我注销引用时,无论是使用子创建还是使用模板文本,它们看起来都是完全相同的。最重要的是,我注销了复制文件(参考上图)和原始文件的值,它们没有区别。但是复制URL工作正常,原始URL仍然会抛出与使用child()创建的ref相同的404错误,
Inbound_Forms/5eE2Oytwrpc7FTkmH4gy/Pacific Trans-Tare Sheet不是在错误中抛出了在上面的代码段中生成的值吗,我在这里展示了如何创建存储ref?我还可以提供哪些信息来帮助缩小问题的范围?我们需要能够看到这些变量中每一个的值,并且它们与bucket中文件的路径完全匹配。现在问题中没有足够的信息来准确地核实一切。我建议通过使用不截断任何值的日志语句和图片来澄清一切。