cloudfunctionsでhttpトリガーで動かした際に、アップロードされたファイルをmulterで処理しようとしても動かなかった.
環境はこんな感じ.
- node.js: v6.14.0
- multer: 1.3.0
原因はわからんがmulter使ってる人で詰まった人向けにだめだった事実だけ共有しておく(ちなみにエミュレーターだと動く).
index.js
const multer = require('multer');
const upload = multer({
dest: '/tmp/'
});
const parseBody = upload.single('file');
exports.uploadFile = (req, res, next) => {
parseBody(req, res, function (err) {
if (err) return next(err);
// undefined
console.log(req.file);
res.send(req.file);
});
};
なので、詰まった人は素直に公式のbusboy使ったやり方したほうが良さそう.
HTTP 関数 | Cloud Functions のドキュメント | Google Cloud
ちなみにこちらはエミュレーターだと動かない.(rawBodyが設定されないバグがあるみたい)
rawBody not present · Issue #167 · GoogleCloudPlatform/cloud-functions-emulator