我使用express
处理发帖请求并解析上传的文件很困难:
import * as admin from "firebase-admin";
import * as functions from "firebase-functions";
import * as formidable from "formidable";
import * as util from "util";
import * as express from "express";
admin.initializeApp();
const app = express();
app.post("/image", (req, res) => {
const form = new formidable.incomingForm();
form.parse(req, async function(err, fields, files) {
res.writeHead(200, { "content-type": "text/plain" });
res.write("received upload:\n\n");
res.end(util.inspect({ fields: fields, files: files }));
});
});
export const api = functions.https.onRequest(app);
我已经在firebase.json中重写了源代码和函数。部署和投放服务时,我一直收到错误Internal Server Error
:发布表单后TypeError: formidable.incomingForm is not a constructor
。
formidable
与我的计算机上的普通节点服务器和Express服务器一起很好地工作。我已经尝试过Firebase节点8引擎beta,使用JS代替TS,但仍然无法正常工作。如何使用Firebase托管和云功能进行强大的工作?请帮忙。
这是我简单的客户表格:
<form action="http://myfirebaseserver/image" method="post" encType="multipart/form-data">
<input type="file" name="myImage" />
<button type="submit">Upload</button>
</form>
目前,我正在尝试busboy
替代,但仍在formidable
上寻找解决方案
答案 0 :(得分:3)
Formidable-serverless是一个不错的选择。它可以与Firebase Cloud Functions一起使用。
答案 1 :(得分:1)
Formidable doesn't work with Cloud Functions,原因与multer doesn't work相同。请改用busboy。