Sadece node.js öğreniyorum ve express ve multer kullanarak basit bir dosya yükleme yapmakta zorluk çekiyorum. İşte Node.js TypeError: undefined 'özelliği' özelliği 'okunamıyor
biçimidir: Yükle yılındabenim configure.js
Ben:
app.use(express.static(path.join(__dirname, 'public')));
app.use(multer({dest:'../public/upload/temp'}).single('file'));
Ve image.js
kontrolör:
create: function(req, res) {
var saveImage = function() {
console.log(req.body);
var possible = 'abcdefghijklmnopqrstuvwxyz',
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)
Ve req
nesneyi oturum açtığınızda, file
yok:
{ title: 'myimage', description: 'something' }
Aslında pasaj, eski express-3 kullanan this book'da okuduğum, biraz değiştirilmiş bir sürüm. Yani temel olarak sadece multer
bölümü ile güncelledim.
Burada neyin yanlış olduğunu ve nasıl düzeltileceğini merak ediyorum.
Daha önce bu multer ile uygulanabilir bir çözüm buldunuz mu? Aşağıda listelenen düzeltmeyi denedim ve req.file olarak değiştirdim ve req.path işe yaradı gibi görünüyor, ancak şimdi kitaptaki örnek,/ad/rotaya başarıyla adlandırma veya dosyayı almadan yönlendiriyor. – Dave
You var tempPath = req.file.path; var ext = path.extname (req.file.originalname) .toLowerCase(); var targetPath = path.resolve ('./ public/upload /' + imgUrl + ext); – iansari