ウィンドウズ
Express 4.12.4
Multer 1.0.1
ノードv0.10.22
Postmanを使用してnode.jsサーバーにファイルを送信しようとしています。
私はreadmeをフォローしようとしています ここ
これが私が郵便配達員と一緒に送っているものです:
POST /ingest HTTP/1.1
Host: localhost:3000
Cache-Control: no-cache
Postman-Token: 69dd2497-2002-56ed-30a4-d662f77dc0b0
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
これがnode.jsでヒットしているものです
var Ingest = require('../controllers/ingest.js');
var multer = require('multer');
var upload = multer({ dest: 'uploads/',fileFilter:function(req,file,cb){
console.log('file is',file)
cb(null,true);
}
});
module.exports = function (app) {
app.post('/ingest', upload.single('test'), function(req, res, next) {
console.log(req.body);
console.log(req.file);
Ingest.ingestData()
.then(function (response){
return res.status(200).json(response);
});
});
}
郵便配達員とこのルートをたどると、{}
にとって req.body
およびundefined
for req.file
。
私は何が間違っているのですか?
ルートファイルに渡されるapp
を初期化する場所は次のとおりです。
var express = require('express');
var app = express();
var http = require('http');
var cfg = require('./config')();
var passport = require('passport');
var cors = require('cors');
var bodyParser = require('body-parser');
app.set('port', process.env.PORT || cfg.port);
var corsOptions = {
Origin: "*",
allowedHeaders: ['Content-Type', 'Authorization', 'Accept', 'x-reset-token', 'x-invite-token', 'x-api-key', 'x-www-form-urlencoded'],
credentials: true
};
app.use(cors(corsOptions));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(passport.initialize());
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
多分そこに何かがそれをやっていますか?
私も試しました
var Ingest = require('../controllers/ingest.js');
var multer = require('multer');
var upload = multer({ dest: 'uploads/',fileFilter:function(req,file,cb){
console.log('file is',file)
cb(null,true);
}
}).single('csv');
module.exports = function (app) {
app.post('/ingest', function(req,res){
upload(req, res, function(err) {
if(err){
console.log(err);
}
console.log(req.body);
console.log(req.file);
Ingest.ingestData()
.then(function (response){
return res.status(200).json(response);
});
});
});
}
そしてそれは助けにはならなかった。 err
については何もログに記録されません
Postmanのスクリーンショットでは、ファイルフィールド名がありません。 Multerはその名前の単一ファイルを受け入れるため、キーはcsv
である必要があります。
これは、同様の答えを探している私のような他の人を助けるでしょう。
Postmanの代わりにcurlリクエストを使用しました。
curl -v -F [email protected] http://localhost/url
Postmanに問題があるようです。
https://github.com/expressjs/multer/issues/317
Postmanを使用してform-dataを使用してファイルを送信するときにも、この問題が発生します。属性req.fileまたはreq.filesは常に未定義です。誰かがPostmanを使用していて、req.fileまたはreq.filesを使用してファイルを取得できた場合は、コメントしてください。