如何从路由返回的req.files对象中正确提取filename属性
现有代码的核心问题是错误使用Array()对req.files做了二次包装。如果req.files本身就是存储所有上传文件的数组,Array(req.files)会生成一个嵌套的二维数组,结构为[[文件1, 文件2, ...]],遍历的时候只会循环一次,只能拿到第一个文件的filename,无法覆盖所有上传文件。
修正后的遍历写法:
let arrayImages = []; if (req.files) { // 直接遍历原生req.files数组即可 req.files.forEach(image => { arrayImages.push(image.filename); }) }
如果需要更简洁的实现,可以直接用数组的map方法配合可选链语法:
// 若req.files存在则遍历提取filename,否则返回空数组 const arrayImages = req.files?.map(image => image.filename) || [];
内容的提问来源于stack exchange,提问作者Pablo Berrettoni
相关产品推荐
相关产品推荐

