最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

尝试在NodeJS中使用Jimp(Express)从Multer上传多张图像时出现的问题

运维笔记admin16浏览0评论

尝试在NodeJS中使用Jimp(Express)从Multer上传多张图像时出现的问题

尝试在NodeJS中使用Jimp(Express)从Multer上传多张图像时出现的问题

我想使用Multer(nodejs)在我的网站上显示多个图像。

我创建了以下功能:

exports.upload = multer(options).array('photo',3);

exports.images = async (req, res, next) => {
    const imgArray = req.files;

    const imgFormat = [];
    for(let i = 0; i < imgArray.length; i++ ) {
        imgFormat.push(imgArray[i].mimetype.split('/')[1] );
    }

    req.body.photo = [];
    for(let i = 0; i < imgArray.length; i++ ) {
        req.body.photo.push(`${uuid.v4()}.${imgFormat[i]}`);
    }

    for (let i = 0; i < imgArray.length; i++) {
        const imgDetails = imgArray[i];
        const photo = await jimp.read(imgDetails.buffer);
        await photo.resize(1200, jimp.AUTO);
        await photo.write(`./public/uploads/${(req.body.photo)}`)
    }
    next();
    console.log(req.body.photo);

};

我使用猫鼬访问我的数据库。在MongoDB上,我设法检索图像而没有遇到任何问题:

see what I get in MongoDB但是当我console.log req.body.photo时,我得到以下数组:

 [ 'cdb88df7-149d-4506-9ec2-7550c32ace66.jpeg',
   'efd9113b-9bd1-410e-a402-e969bf7aa8e3.png',
   '6408dbdc-4093-44a9-91f1-e34e7c5918e1.jpeg' ]

在我的memoryStorage中,当我需要将三个图像分开时,我保存了一个字符串:

我得到的是:cdb88df7-149d-4506-9ec2-7550c32ace66.jpeg,efd9113b-9bd1-410e-a402-e969bf7aa8e3.png,6408dbdc-4093-44a9-91f1-e34e7c5918e1.jpeg

我想要的是:cdb88df7-149d-4506-9ec2-7550c32ace66.jpegefd9113b-9bd1-410e-a402-e969bf7aa8e3.png6408dbdc-4093-44a9-91f1-e34e7c5918e1.jpeg

将图像彼此分开而不是放在一个数组中使我的代码正常工作,我已经对其进行了测试。

您能告诉我怎么做吗?我没主意了。非常感谢

回答如下:

您可以尝试使用新的ES6的数组解构为图像分配变量

从文档开始:

解构赋值语法是一个JavaScript表达式,它可以将数组中的值或对象中的属性解压缩为不同的变量。]​​>

因此就这样

let [imageOne, imageTwo, imageThree] = req.body.photo;

然后您可以按照需要的方式分别使用图像如果您使用console.log()imageOne,则会得到

console.log(imageOne) //output cdb88df7-149d-4506-9ec2-7550c32ace66.jpeg
发布评论

评论列表(0)

  1. 暂无评论