我正在尝试将数据从req.files数组中提取出来,但是点表示法不起作用,我也不知道自己缺少什么。
我的哈巴狗设置:
if product.image
.col-lg-1.pull-left
img.product-img(src='/images/' + product.image, alt=product.title)
.col-lg-11.pull-right
input(type="hidden", name="mainImg", value=product.image)
input.form-control(type="file", name="image0", id="image0")
.clear
else
.col-lg-11.pull-right
input.form-control(type="file", name="image0", id="image0" value="")
这将按预期返回req.files数组:
console.log(req.files)
结果:
{ image0:
[ { fieldname: 'image0',
originalname:'Some_image.jpg',
encoding: '7bit',
mimetype: 'image/jpeg',
destination: 'images',
filename: 'bdad727257698479d84157ad0211b05f.jpg',
path: 'images\\bdad727257698479d84157ad0211b05f.jpg',
size: 109205 } ],
image1:
[ { fieldname: 'image1',
originalname:'Some_image.jpg',
encoding: '7bit',
mimetype: 'image/jpeg',
destination: 'images',
filename: '9546c3810ad9d6c471fde641a30078fd.jpg',
path: 'images\\9546c3810ad9d6c471fde641a30078fd.jpg',
size: 109205 } ],
image2:
[ { fieldname: 'image2',
originalname:'Some_image.jpg',
encoding: '7bit',
mimetype: 'image/jpeg',
destination: 'images',
filename: '0bd6d9da3b53348f5b9145723d4da340.jpg',
path: 'images\\0bd6d9da3b53348f5b9145723d4da340.jpg',
size: 78420 } ]
} '#################'
这将按预期返回第一个数组元素:
console.log(req.files['image0'], '#################')
结果:
[ { fieldname: 'image0',
originalname: 'Some_Image_Name.jpg',
encoding: '7bit',
mimetype: 'image/jpeg',
destination: 'images',
filename: '28efd1e7544820acc0ac174ac8404ea9.jpg',
path: 'images\\28efd1e7544820acc0ac174ac8404ea9.jpg',
size: 109205 } ] '#################'
这返回未定义,我不明白为什么:
console.log(req.files['image0'].fieldname)
这是我的multer设置:
const upload = multer({dest: 'images', storage: imgStorage, fileFilter: fileFilter });
// app.use(upload.array('image'));
app.use(upload.fields([
{
name: 'image0', maxCount: 1
},
{
name: 'image1', maxCount: 1
},
{
name: 'image2', maxCount: 1
},
{
name: 'image3', maxCount: 1
}
])
我最终想建立一个循环来遍历20张或更多张图片,但是我想先尝试获取数据,然后再尝试处理这样的循环。该项目用于多图像上载,如果没有传递图像数据,并且如果仅传递指定的图像,则图像不会被覆盖。这就是为什么我使用upload.fields而不是.any()或array()的原因。
任何帮助或建议,将不胜感激。
答案 0 :(得分:0)
您正在尝试访问数组的属性,就好像它是一个对象一样。这是无效的Javascript。
尝试:req.files['image0'][0].fieldname
req.files['image0']
返回:
[ { fieldname: 'image0',
originalname: 'Some_Image_Name.jpg',
encoding: '7bit',
mimetype: 'image/jpeg',
destination: 'images',
filename: '28efd1e7544820acc0ac174ac8404ea9.jpg',
path: 'images\\28efd1e7544820acc0ac174ac8404ea9.jpg',
size: 109205 } ]
这是一个数组。
req.files['image0'][0]
返回:
{ fieldname: 'image0',
originalname: 'Some_Image_Name.jpg',
encoding: '7bit',
mimetype: 'image/jpeg',
destination: 'images',
filename: '28efd1e7544820acc0ac174ac8404ea9.jpg',
path: 'images\\28efd1e7544820acc0ac174ac8404ea9.jpg',
size: 109205 }
这是一个对象。
您可以从该对象访问属性fieldname
。