如何循环进入多个字段名以获得files.path



我有Node.js应用程序,由express服务,我的前端是用React.js制作的。我的问题是我得到了不同的字段名为我的图像。封面照片和头像照片。我很难弄清楚如何循环到不同的字段名,并获得图像的路径。我想要的结果是后端将res.send(图像的路径,无论是头像或覆盖或两者)。

// imageuploadroutes
import express from 'express';
const router = express.Router();
import multer from 'multer';
import path from 'path';

const storage = multer.diskStorage({
destination: function (req, file, cb) {
if (file.fieldname === 'coverPhoto') {
cb(null, 'public/images/cover');
} else {
cb(null, 'public/images/avatar');
}
},
filename: function (req, file, cb) {
cb(
null,
`${file.fieldname}-${Date.now()}${path.extname(file.originalname)}`
);
},
});

const upload = multer({
storage,
limits: {
fileSize: '2mb',
},
fileFilter: (req, file, cb) => {
if (
file.mimetype == 'image/png' ||
file.mimetype == 'image/jpg' ||
file.mimetype == 'image/jpeg'
) {
cb(null, true);
} else {
cb(null, false);
return cb(new Error('Only .png, .jpg and .jpeg format allowed!'));
}
},
});


router.post(
'/user/profile',
upload.fields([
{
name: 'coverPhoto',
maxCount: 1,
},
{
name: 'avatarPhoto',
maxCount: 1,
},
]),
function (req, res) {
var file = req.files[Object.keys(req.files)[0]]; 
console.log(file)
}
);

export default router;

结果

[
{
fieldname: 'avatarPhoto',
originalname: 'Screen Shot 2021-03-02 at 11.49.56 AM.png',
encoding: '7bit',
mimetype: 'image/png',
destination: 'public/images/avatar',
filename: 'avatarPhoto-1614704247624.png',
path: 'public/images/avatar/avatarPhoto-1614704247624.png',
size: 597941
}
]

但是问题是我找不到。path

该文件是一个数组,您应该遍历它:

var file = req.files[Object.keys(req.files)[0]]; 
console.log(file);
file.forEach(fileData => {
console.log(fileData.path);
})

相关内容

最新更新