无法读取未定义的 属性 'path'
cannot read property 'path' of undefined
我试图在上传到服务器后记录 文件的路径,但是 returns 出现以下错误:
TypeError: Cannot read property 'path' of undefined
我成功上传了文件,但无法获取文件路径。
router.post('/uploadFile',function(req,res,next){
if(req.method == "POST"){
var accessToken = req.query["access_token"];
var customerID = req.decoded.userID;
var Storage = multer.diskStorage({
destination: function(req, file, callback) {
callback(null, "./public/images");
},
filename: function(req, file, callback) {
callback(null, file.fieldname + "_" + Date.now() + "_" + file.originalname);
console.log(req.file.path);
}
});
var upload = multer({
storage: Storage
}).array("imgUploader", 3);
});
您没有正确使用 multer。
- multer 的初始化需要在您的中间件代码之外进行
- Multer 自己的中间件(在 init 之后获得)需要在您的之前执行(以便它可以在您访问之前解析请求)。
如果您使用数组,有多个文件使用相同的参数名称上传,所以应该使用 req.files
,而不是 req.file
。结合这些,您的代码变为:
var Storage = multer.diskStorage({
destination: function(req, file, callback) {
callback(null, "./public/images");
},
filename: function(req, file, callback) {
callback(null, file.fieldname + "_" + Date.now() + "_" + file.originalname);
console.log(req.files['imgUploader'][0].path); //Or use a loop for all files
}
});
var upload = multer({
storage: Storage
}).array("imgUploader", 3);
router.post('/uploadFile', upload, function(req,res,next){
if(req.method == "POST"){
[...]
}
});
我试图在上传到服务器后记录 文件的路径,但是 returns 出现以下错误:
TypeError: Cannot read property 'path' of undefined
我成功上传了文件,但无法获取文件路径。
router.post('/uploadFile',function(req,res,next){
if(req.method == "POST"){
var accessToken = req.query["access_token"];
var customerID = req.decoded.userID;
var Storage = multer.diskStorage({
destination: function(req, file, callback) {
callback(null, "./public/images");
},
filename: function(req, file, callback) {
callback(null, file.fieldname + "_" + Date.now() + "_" + file.originalname);
console.log(req.file.path);
}
});
var upload = multer({
storage: Storage
}).array("imgUploader", 3);
});
您没有正确使用 multer。
- multer 的初始化需要在您的中间件代码之外进行
- Multer 自己的中间件(在 init 之后获得)需要在您的之前执行(以便它可以在您访问之前解析请求)。
如果您使用数组,有多个文件使用相同的参数名称上传,所以应该使用
req.files
,而不是req.file
。结合这些,您的代码变为:var Storage = multer.diskStorage({ destination: function(req, file, callback) { callback(null, "./public/images"); }, filename: function(req, file, callback) { callback(null, file.fieldname + "_" + Date.now() + "_" + file.originalname); console.log(req.files['imgUploader'][0].path); //Or use a loop for all files } }); var upload = multer({ storage: Storage }).array("imgUploader", 3); router.post('/uploadFile', upload, function(req,res,next){ if(req.method == "POST"){ [...] } });