Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js express multer无法读取属性';profileimage';未定义的_Node.js_Express_Multer - Fatal编程技术网

Node.js express multer无法读取属性';profileimage';未定义的

Node.js express multer无法读取属性';profileimage';未定义的,node.js,express,multer,Node.js,Express,Multer,我正在尝试提交一个表单,其中包含一个名为profileimage的文件输入,我使用的是express 4、express generator和multer 在我的app.js中,我添加了multer,如下所示: var multer = require('multer'); var upload = multer({ dest: './uploads' }); 我下面的教程实际上是这样设置multer的(在需要之后),但它给了我一个错误: app.use(multer({dest: './up

我正在尝试提交一个表单,其中包含一个名为
profileimage
的文件输入,我使用的是express 4、express generator和multer

在我的
app.js
中,我添加了multer,如下所示:

var multer = require('multer');
var upload = multer({ dest: './uploads' });
我下面的教程实际上是这样设置multer的(在需要之后),但它给了我一个错误:

app.use(multer({dest: './uploads'}));
在我的
routes
文件夹中,在相应的文件中,我有以下内容:

router.post('/register', function(req, res, next) {
// get form values
var name = req.body.name;
var email = req.body.email;
var username = req.body.username;
var password = req.body.password;
var password2 = req.body.password2;

// check for image field
if (req.files.profileimage)
{
    console.log('Uploading file...');
...
但是,当我提交表单时,我收到以下错误:

Cannot read property 'profileimage' of undefined

它似乎无法理解
req.files.profileimage
,但我不知道为什么?

multer的API在不久前发生了一些变化,因此一些教程仍然使用旧的API

对于单个文件,您可以执行以下操作:

var uploads = multer({dest: './uploads'});

// ...

router.post('/register', uploads.single('profileimg'), function(req, res, next) {

   // ...

   if (req.file) {
     console.log('Profile image uploaded');
   }
});

有关其他场景的更多示例,请参见。

您的请求主体是一个文件还是多个文件?如果您是指一种文件输入类型。我尝试了类似的方法,但没有成功。这一切都到哪里去了?正如我所说,我正在使用express generator进行网站设置,因此我包括了multer和var uploads=multer({dest:'./uploads'});在app.js文件中。我还尝试将它们包含在我的routes文件(routes文件夹中的相应文件)中,并按照您的建议执行操作,但随后我得到
TypeError:uploads.single不是一个函数
,如果我没有将multer包含在routes文件中,则会出现另一个错误,即
ReferenceError:multer未定义
(即使它包含在app.js文件中)。但正如我所说,我确实将其包含在routes文件中,但随后出现了上述错误。您安装了哪个版本的
multer
?可能它已经过时。是的,我确实在routes文件中使用了multer,而不是app.js(这似乎很可笑,但我想现在必须如此),而且它似乎正在工作,谢谢!有同样的问题,这解决了问题,谢谢。
if (req.files && req.files.profileImage) {
// only if there are files
} else {
 // You should see this now
}