[英]req.files not working node.js - express
Hey so I am trying to accept an uploaded file but everytime I call req.files it is considered undefined... Not sure what I am doing wrong... 嘿所以我试图接受一个上传的文件,但每次我调用req.files它都被认为是未定义的...不确定我做错了什么...
This is my app.js file: 这是我的app.js文件:
var express = require('express')
, user = require('./routes/user')
, http = require('http')
, path = require('path')
, mongoose = require('mongoose')
, mongoConnect = mongoose.connect('mongodb://localhost/clothing')
, app = express();
// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser({uploadDir: './public/img'}));
app.use(express.multipart());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
app.get('/user', user.user);
app.post('/user', user.userPost);
Then in my routes file I am just calling 然后在我的路线文件中我只是打电话
req.files
and on the client side I am calling: 在客户端,我打电话给:
form(action="/user", method="post")
label name:
input(type="text", name="name")
label pic:
input(type="file", name="picture", enctype="multipart/form-data")
input(type="submit", value="Add New Clothes Item")
您需要在enctype="multipart/form-data"
添加enctype="multipart/form-data"
Besides what @Jani said, you have an error in your app: 除了@Jani所说的,你的应用中有错误:
app.use(express.bodyParser({uploadDir: './public/img'}));
app.use(express.multipart());
This basically translates to: 这基本上转化为:
app.use(express.json());
app.use(express.urlencoded());
app.use(express.multipart({uploadDir: './public/img'}));
app.use(express.multipart());
So no need for the last multipart middleware. 所以不需要最后的多部分中间件。
Docs: 文档:
http://expressjs.com/api.html#bodyParser http://expressjs.com/api.html#bodyParser
Instead of calling express.bodyParser() consider the alternatives mentioned here: https://github.com/senchalabs/connect/wiki/Connect-3.0 而不是调用express.bodyParser()考虑这里提到的替代方案: https : //github.com/senchalabs/connect/wiki/Connect-3.0
In my case, as Connect will remove multipart middleware compatibility, a warning appears every time I start node server. 就我而言,由于Connect将删除多部分中间件兼容性,每次启动节点服务器时都会出现警告。
connect.multipart() will be removed in connect 3.0
visit https://github.com/senchalabs/connect/wiki/Connect-3.0 for alternatives
connect.limit() will be removed in connect 3.0
I've tested connect-multiparty and req.files is initialized fine. 我已经测试了connect-multiparty和req.files初始化很好。 https://github.com/andrewrk/connect-multiparty
https://github.com/andrewrk/connect-multiparty
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.