ファイルをcurlでアップロードしてNode.jsで受け取る
なかなかうまく行かなくて半日かかったのでまとめておく。
参考
Node.jsアプリ
まずはmulter
を入れてNode.jsアプリを構築。
$ npm install --save multer
var express = require('express'); var multer = require('multer'); var upload = multer({ dest: 'uploads/' }); var app = express(); app.post('/', upload.single('data'), function (req, res) { console.log(req.file); res.end('success'); }); app.listen(4000, function () { console.log('Example app listening on port 4000!'); });
curlコマンドでテスト
ローカルでテストする場合はlocalhostにcurlでPOSTを投げるだけ。
$ curl "localhost:4000" -X POST -F data=@test/test.csv
今回はtest/test.csvを用意した。jsonでもなんでもいい。
column0,column1,column2,column3 1,2,3,4 a,b,c,d
結果
{ fieldname: 'data', originalname: 'test.csv', encoding: '7bit', mimetype: 'application/octet-stream', destination: 'uploads/', filename: 'de080535f6452289e8b896236c0d179d', path: 'uploads/de080535f6452289e8b896236c0d179d', size: 49 }
uploadディレクトリにファイルが作成された。uploadディレクトリは勝手に作成されるっぽい。req.file
のところでreq.body
とreq.files
を指定してたのでずっと{}
とだけ表示されてかなりハマってしまった。README見たらちゃんと.single
のときはreq.file
って書いてあった。つらい。