gpt4 book ai didi

Node.js 类型错误 : Cannot read property 'file' of undefined

转载 作者:搜寻专家 更新时间:2023-10-31 22:39:11 25 4
gpt4 key购买 nike

我刚刚开始学习 node.js,很难使用 express 和 multer 进行简单的文件上传。

这是表格:

上传图片

在我的 configure.js 中我有:

app.use(express.static(path.join(__dirname, 'public')));
app.use(multer({dest:'../public/upload/temp'}).single('file'));

image.js Controller :

create: function(req, res) {
var saveImage = function() {
console.log(req.body);
var possible = 'abcdefghijklmnopqrstuvwxyz0123456789',
imgUrl = '';

for(var i=0; i < 6; i+=1) {
imgUrl += possible.charAt(Math.floor(Math.random() * possible.length));
}

var tempPath = req.files.file.path, //<line 55 error
ext = path.extname(req.files.file.name).toLowerCase(),
targetPath = path.resolve('./public/upload/' + imgUrl + ext);

if (ext === '.png' || ext === '.jpg' || ext === '.jpeg' || ext === '.gif') {


fs.rename(tempPath, targetPath, function(err) {
if (err) throw err;

res.redirect('/images/' + imgUrl);
});
} else {
fs.unlink(tempPath, function () {
if (err) throw err;

res.json(500, {error: 'Only image files are allowed.'});
});
}
};

saveImage();
},

但是,当我尝试上传图片时出现此错误:

TypeError: Cannot read property 'file' of undefined
at saveImage (/home/pc/node-dev/test-proj/controllers/image.js:55:37)
at module.exports.create (/home/pc/node-dev/test-proj/controllers/image.js:76:9)
at Layer.handle [as handle_request] (/home/pc/node-dev/test-proj/node_modules/express/lib/router/layer.js:95:5)
at next (/home/pc/node-dev/test-proj/node_modules/express/lib/router/route.js:131:13)
at Route.dispatch (/home/pc/node-dev/test-proj/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/home/pc/node-dev/test-proj/node_modules/express/lib/router/layer.js:95:5)
at /home/pc/node-dev/test-proj/node_modules/express/lib/router/index.js:277:22
at Function.process_params (/home/pc/node-dev/test-proj/node_modules/express/lib/router/index.js:330:12)
at next (/home/pc/node-dev/test-proj/node_modules/express/lib/router/index.js:271:10)
at urlencodedParser (/home/pc/node-dev/test-proj/node_modules/body-parser/lib/types/urlencoded.js:95:37)

当我记录 req 对象时,file 不存在:

{ title: 'myimage', description: 'something' }

实际上,该片段只是我在 this book 中读到的版本稍作修改,它使用的是过时的 express-3。所以基本上我只是用 multer 部分更新了它。

我想知道这里出了什么问题以及如何解决它。

最佳答案

您正在使用 upload.single ,您应该使用 req.file 而不是 req.files。要上传多个文件,请使用 upload.array .

请注意,在 req.file 之后您不需要另一个 .file。如果您使用 upload.single,则 req.file 是上传的文件。

关于Node.js 类型错误 : Cannot read property 'file' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35168541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com