【发布时间】:2018-04-24 20:05:42
【问题描述】:
我正在尝试将文件上传到 Cloud Functions,使用 Express 在那里处理请求,但我没有成功。我创建了一个在本地工作的版本:
服务器端 js
const express = require('express');
const cors = require('cors');
const fileUpload = require('express-fileupload');
const app = express();
app.use(fileUpload());
app.use(cors());
app.post('/upload', (req, res) => {
res.send('files: ' + Object.keys(req.files).join(', '));
});
客户端 js
const formData = new FormData();
Array.from(this.$refs.fileSelect.files).forEach((file, index) => {
formData.append('sample' + index, file, 'sample');
});
axios.post(
url,
formData,
{
headers: { 'Content-Type': 'multipart/form-data' },
}
);
此完全相同的代码在部署到未定义 req.files 的 Cloud Functions 时似乎会中断。有谁知道这里发生了什么?
编辑
我也尝试过使用multer,它在本地运行良好,但是一旦上传到 Cloud Functions,我得到了一个空数组(相同的客户端代码):
const app = express();
const upload = multer();
app.use(cors());
app.post('/upload', upload.any(), (req, res) => {
res.send(JSON.stringify(req.files));
});
【问题讨论】:
-
我不知道
express-fileupload,但我使用multer模块成功接收文件上传。 -
我尝试用 multer 在本地设置一些东西,它立即起作用(见帖子中的编辑)。但同样,当部署到 Firebase 时,我没有得到任何结果。我不明白我做错了什么。
-
好的,我的 multer 代码也遇到了同样的问题,过去运行良好。但是,在本地使用
firebase serve可以正常工作。将与 Cloud Functions 团队一起调查。 @Hacktisch @Eindbaas -
我联系了 firebase-support,我得到了答复:“Cloud Functions 似乎在 multipart/form-data 方面存在问题。我会将您的案例上报给我们的工程师和我收到更新后会通知你的。”
-
我在这里打开了一个问题 => github.com/firebase/firebase-functions/issues/141
标签: javascript firebase express google-cloud-functions