如何用邮递员将邮件发送到node.js

视窗
快递4.12.4
Multer 1.0.1
节点v0.10.22

我试图发送一个文件到我的node.js服务器使用邮递员。

我试图按照这里的自述

这是我正在和邮递员一起发送的信息:

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 {}undefinedreq.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); }); }); }); } 

而这并没有帮助。 它不logging任何err

在邮差截图中,文件字段名称丢失。 密钥应该是csv因为Multer接受这个名字的单个文件。

这会帮助像我这样的人寻找类似的答案。

我用卷毛请求而不是邮差。

 curl -v -F csv=@file.csv http://localhost/url 

邮差似乎有一个问题。

https://github.com/expressjs/multer/issues/317

当我使用邮递员使用表单数据发送文件时,我也有这个问题。 属性req.file或req.files总是未定义的。 如果有人使用邮递员,并能够使用req.file或req.files检索文件,请评论。