无法访问请求.当使用路由器时,在nodeJS中使用express 4.0
Unable to access req.files in nodeJS with express 4.0 when using a router
当我尝试上传文件到我的服务器时,它失败了,出现以下错误:
TypeError: Cannot read property 'file' of undefined
at router.get.files (/home/n07070/Documents/Code/PicTemp/controllers/index.js:229:29)
at Layer.handle [as handle_request] (/home/n07070/Documents/Code/PicTemp/node_modules/express/lib/router/layer.js:95:5)
at next (/home/n07070/Documents/Code/PicTemp/node_modules/express/lib/router/route.js:131:13)
at ensureAuthenticated (/home/n07070/Documents/Code/PicTemp/controllers/index.js:210:39)
at Layer.handle [as handle_request] (/home/n07070/Documents/Code/PicTemp/node_modules/express/lib/router/layer.js:95:5)
at next (/home/n07070/Documents/Code/PicTemp/node_modules/express/lib/router/route.js:131:13)
at Route.dispatch (/home/n07070/Documents/Code/PicTemp/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/home/n07070/Documents/Code/PicTemp/node_modules/express/lib/router/layer.js:95:5)
at /home/n07070/Documents/Code/PicTemp/node_modules/express/lib/router/index.js:277:22
at Function.process_params (/home/n07070/Documents/Code/PicTemp/node_modules/express/lib/router/index.js:330:12)
我有我的app.js分为两部分:./controllers/中的index.js文件和主目录中的app.js文件。我这样调用app.js中的index.js:
// Load the controller
var index = require('./controllers/index');
var multer = require('multer');
app.use(multer({dest:'./writable/'}).single('file'));
app.use('/', index);
在app.js中
module.exports = router;
router.post('/upload', ensureAuthenticated, function(req, res, next) {
var is;
var os;
var targetPath;
var targetName;
console.log(req.files);
var tempPath = req.files.file.path;
//get the mime type of the file
var type = mime.lookup(tempPath);
//get the extenstion of the file
var extension = tempPath.split(/[. ]+/).pop();
//check to see if we support the file type
if (IMAGE_TYPES.indexOf(type) == -1) {
return res.send(415, 'Supported image formats: jpeg, jpg, jpe, png.');
}
//create a new name for the image
targetName = uid(22) + '.' + extension;
//determine the new path to save the image
targetPath = path.join(TARGET_PATH, targetName);
//create a read stream in order to read the file
is = fs.createReadStream(tempPath);
//create a write stream in order to write the a new file
os = fs.createWriteStream(targetPath);
is.pipe(os);
//handle error
is.on('error', function() {
if (err) {
return res.send(500, 'Something went wrong');
}
});
//if we are done moving the file
is.on('end', function() {
//delete file from temp folder
fs.unlink(tempPath, function(err) {
if (err) {
return res.send(500, 'Something went wrong');
}
//send something nice to user
res.render('image', {
name: targetName,
type: type,
extension: extension
});
});//#end - unlink
});//#end - on.end
});
我使用mutler来处理文件上传。我怎样才能解决这个问题?谢谢你。
正如@adeneo指出的,当您有多个文件时,req.files
是一个数组。
您需要通过将其设置为req.files[x]
来访问这些
相关文章:
- nodejs/express包含本地js文件
- 将路由处理程序委托给NodeJS+Express中的其他模块
- NodeJS Express中的分页方法
- AngularJS路由服务器端支持(NodeJS+express)
- 简单的单元测试 nodeJS/Express
- NodeJS + Express 404 在基本路由上
- nodejs/express获取发布的数据
- Nodejs Express 4 Routing Questin
- 使用nodejs/express时出现意外的换行符
- 如何使用 NodeJS Express 服务器在 HTML 中包含 JS 文件
- 在nodejs (express/http)中获取url的响应
- NodeJS express - 无法获取路由
- Nodejs - Express JSON 解析器无法响应
- 如何通过Postman将JSON发送到NodeJS Express Server
- 如何将 EmberJS 前端与 NodeJS Express API 连接
- NginX 代理 Nodejs/Express - 静态文件上的 404
- 在 nodejs Express app 中的链接中发送 DELETE 请求
- Nodejs Express - methodOverride 不适用于多部分/表单数据
- nodejs express mongoose connect to db error
- NodeJS Express 中的异步操作