如何从Firebase存储中下载文件在NextJs13

c3frrgcw  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(97)

我正在建立一个网站,使用NextJs和Firebase分发电子书。当用户点击下载按钮时,我想从云Firestrore下载一个PDF文件
我试着像这样下载文件

const fetchFile = async () => {
  const response = await fetch(getDownloadURL(fileRef));
  console.log(response)
  const blob = await response.blob();
  return blob;
};
const download = async () => {
  const blob = await fetchFile();
  FileSaver.saveAs(blob, 'file.pdf');
};

一个文件被下载到我的电脑,但当我试图打开它,我得到一个错误说未能加载文档。在我点击错误按钮后,我在控制台上看到一个错误:
404 Not Found
在我将响应记录到控制台之后,我发现它返回的是http://localhost:3000/[object%20Promise],而不是文件的URL

56lgkhnf

56lgkhnf1#

getDownloadURL是一个异步方法,它返回一个Promise。你也需要await这个调用。
所以:

const fetchFile = async () => {
  const downloadURL = await getDownloadURL(fileRef);
  const response = await fetch(downloadURL);
  console.log(response)
  const blob = await response.blob();
  return blob;
};

相关问题