Node.js NodeJS FileUpload-无法读取未定义的属性
我在用NodeJS,ExpressJS,mongoose,EJS 上传表格:Node.js NodeJS FileUpload-无法读取未定义的属性,node.js,express,mongoose,Node.js,Express,Mongoose,我在用NodeJS,ExpressJS,mongoose,EJS 上传表格: <form method='post' enctype='multipart/form-data'> <input type='text' name='photo[name]'/> <input type='file' name='photo[image]'/> <input type='submit' value='Upload'/> </
<form method='post' enctype='multipart/form-data'>
<input type='text' name='photo[name]'/>
<input type='file' name='photo[image]'/>
<input type='submit' value='Upload'/>
</form>
app.js
:
var app = express();
...
app.set('view engine', 'ejs');
app.use(express.logger('dev'));
app.use(express.bodyParser());
...
路线:
var Photo = require('../models/Photo');
var path = require('path');
var fs = require('fs');
var join = path.join;
exports.submit = function (dir) {
return function(req, res, next){
var img = req.files.photo.image;
var name = req.body.photo.name || img.name;
var path = join(dir, img.name);
fs.rename(img.path, path, function(err){
if (err)
return next(err);
Photo.create({
name: name,
path: img.name
}, function (err) {
if (err)
return next(err);
res.redirect('/');
});
});
};
};
尝试上载时出现的问题:
500 TypeError: Cannot read property 'photo' of undefined
我也遇到了同样的问题,我所做的就是向bodyParser对象传递几个选项
app.use(express.bodyParser({ keepExtensions: true, uploadDir: __dirname + '/public/photos' }));
在我添加了该选项后,我觉得一切都很好。使用“连接多方”并将其包含在路由文件中:
var multipart=require('connect-multiparty');
然后用作:
app.post('/uploads',multipart(),function(req,res){
// ...
});
我试过你的代码,效果很好。哪一行抛出错误,
var img=…
或var name=…
?错误在var name=req.body.photo.name | img.name代码>上传文件后出错。这是我尝试的。请注意,我更改了bodyParse
的上载目录,以避免分区问题。@rvidal,你能上载图像文件吗?是的,它起作用了。顺便说一句,要点有一个输入错误(filez
),但我尝试了其他方面。
app.post('/uploads',multipart(),function(req,res){
// ...
});