使用Google函数框架上传文件

问题描述 投票:0回答:1

使用 Express 时,我无法使用 FunctionFramework 进行文件上传。

我创建了一个示例存储库:https://github.com/Boardtale/FunctionFrameworkAndUploadingFiles/blob/master/index.js.

我尝试过使用 Multer、Formidable、Busboy,甚至本地方法。当使用 FunctionFramework 时,所有这些都会失败,但当我直接调用 Express 并侦听端口时,它们工作得很好。

似乎幕后正在发生一些我无法弄清楚的事情。我也尝试过添加不同的正文解析器,但没有任何帮助。

这是我针对特定库得到的结果。
Multer:

req.file
未定义
厉害:不进
form.parse

原生:不入
req.on('end'

忙人:

解析文件上传时出错:错误:意外的表单结尾 在 Multipart._final (W:\workspace\playground ode_modules usboy\lib ypes\multipart.js:588:17) 在预完成时(节点:内部/流/可写:914:14) 在完成可能(节点:内部/流/可写:928:5) 在 Writable.end(节点:内部/流/可写:843:5) 在 onend (节点:内部/流/可读:946:10) 在 process.processTicksAndRejections (node:internal/process/task_queues:77:11) 完成的异常 函数:错误[ERR_HTTP_HEADERS_SENT]:无法在它们之后设置标头 发送给客户

Ofc 文件以内容类型发送:

multipart/form-data; boundary=<calculated when request is sent>

node.js file-upload google-cloud-functions
1个回答
0
投票

正如 @samthecodingman 的类似线程中所提到的

Firebase Functions
是在
functions-framework-nodejs
包(或者相同代码的内部版本)之上构建的,它在代码运行之前解析主体。此行为记录在本文档中。

这表明当您尝试将其提供给

Busboy
时,请求的正文流已耗尽,这就是您看到“意外的表单结束”错误消息的原因。您必须使用框架添加到请求中的
rawBody
属性才能访问和执行原始请求内容。

您也可以参考这个stackoverflow线程

© www.soinside.com 2019 - 2024. All rights reserved.