从谷歌云存储下载 excel 文件返回一个缓冲区,我怎样才能返回实际的 excel 文件,以便我可以在我的处理程序中写入它?

Posted

技术标签:

【中文标题】从谷歌云存储下载 excel 文件返回一个缓冲区,我怎样才能返回实际的 excel 文件,以便我可以在我的处理程序中写入它?【英文标题】:Downloading excel file from Google Cloud storage returns a buffer, how can I return the actual excel file so I can write to it in my handler? 【发布时间】:2022-01-04 11:20:32 【问题描述】:

我正在尝试使用 Firebase Admin SDK 使用以下代码从我的存储桶中检索一个 excel 文件:

export const getTemplate = async (fileName: string) => 
  const filePath = admin
    .storage()
    .bucket()
    .file('sheets/template.xlsx')

  const [file] = await filePath.download()
  return file

然后我将从这个函数返回的内容传递给这个函数:

export const writeToTemplate = (
  objects: any[],
  sheetNames: string[],
  file
) => 

  objects.forEach((dataObject, index) => 
    const sheetName = sheetNames[index]
    const worksheet = templateFile.Sheets[sheetName]
    utils.sheet_add_json(worksheet, dataObject)
  )
  return file

但是,这会引发无法读取我的文件的错误。当我控制台记录文件时,它显示一个缓冲区

<Buffer 50 4b 03 04 14 00 06 00 08 00.........>

我如何才能真正写入文件?干杯:)

【问题讨论】:

【参考方案1】:

解决方案是使用 xlsx 包中的 read 函数读取 Buffer

【讨论】:

以上是关于从谷歌云存储下载 excel 文件返回一个缓冲区,我怎样才能返回实际的 excel 文件,以便我可以在我的处理程序中写入它?的主要内容,如果未能解决你的问题,请参考以下文章

从谷歌云存储桶中读取文件

使用node.js中的firebase从谷歌云存储读取时,ESlint问题“每个都应该返回一个值或抛出”

如何从谷歌云平台下载 WordPress 文件

从谷歌云存储到 s3 的 gsutil rsync 挂在大文件上

如何从谷歌云存储中批量删除文件? (Node.js)

如何从谷歌云存储中读取子目录/前缀中的文件?