在 NodeJS 中使用url链接而不是文件路径

omhiaaxx  于 2023-01-08  发布在  Node.js
关注(0)|答案(1)|浏览(153)

我需要在节点中处理一个文件,以便从该文件中提取一些文本,我的问题是,因为我是新来的节点,我不知道如何传递文件的路径。我正在使用Firebase的cloud函数,所以没有服务器,因此没有文件的目录。有解决方案吗?比如使用url链接?
下面是我的Node JS代码:

exports.extractTextFromPDF = functions
.https.onCall((data, context) => {
const bucket = firebase.storage().bucket()
const file = bucket.file(data.pathLink) //data.pathlink is 'my-pdf.pdf' which is a file inside my storage
return file.download()
  .then(data => {
    return pdfParse(data[0])
  })
  .then(data => {
    file.delete()
    .then(() => {
      return data.text
    })
    .catch(err => console.log(err))
  })
  .catch(err => console.log(err))

})
我知道我可以只传递路径到一个文件在我的服务器,但我没有服务器!我可以使用一个网址链接代替?
如果这不可能,是否可以在前端上传一个文件,然后在节点中传递该文件?
我试过很多方法:
1.我尝试过传递url链接而不是文件路径-不起作用
1.我尝试将firebase存储桶路径作为文件路径传递-不起作用
1.我试过从前端上传文件并将其作为文件路径传递到节点-也不起作用

1mrurvl1

1mrurvl11#

如本官方云函数sample所示,您可以使用云函数的临时目录作为本地磁盘存储。
如文档中所述,在结束云功能之前,应删除临时文件:
临时目录中的本地磁盘存储是内存中的文件系统。您写入的文件会消耗函数可用的内存,有时会在调用之间持续存在。未能显式删除这些文件可能最终导致内存不足错误和随后的冷启动
文档还提醒我们应该使用独立于平台/操作系统的方法来构造文件路径。通过遵循示例中提供的方法,您将遵循此建议。

相关问题