【问题标题】:Receiving multiple images using multer in NodeJS problem在NodeJS问题中使用multer接收多个图像
【发布时间】:2021-06-03 08:41:12
【问题描述】:

我正在使用 multer 包从前端 (ReactJS) 接收多个图像。我正在发送附加到基本字段的图像数组,我想使用 node.js 将它们保存在我的 Rest API 服务器中。 我正在接收我的身体字段,但问题是没有收到图像。这是我的代码:

const multer = require('multer');

const storage = multer.diskStorage({
    destination: function(req, file, cb) {
        cb(null, './uploads/');
    },
    filename: function(req, file, cb) {
        cb(null, new Date().toISOString() + file.originalname);
    }
});

const fileFilter = (req, file, cb) => {
    if(file.mimetype === 'image/jpeg' || file.mimetype === 'image/png'){
        cb(null, true);
    } else {
        cb(new Error('worng file format'), true);
    }
}

// initialize multer
const upload = multer(
    {
        storage: storage,
        fileFilter: fileFilter,
    } 
);

router.get('/', categoryController.getCategories);

router.post('/', upload.array('images', 3), (req, res, next) => {

    try {
        // here I want the images to save their location
        console.log(req.files);
        const name = req.body.name;
        const description = req.body.description;

    } catch (err) {
        
    }
});

这是我发送图像数组的方式:

我的图片应该在的文件夹upload 是空的; 那么,如何保存我的多张图片?

【问题讨论】:

  • 我看不出有什么奇怪的。 console.log(req.files) 打印什么?
  • @MaximOrlov 它打印一个空数组。像这样的“[]”
  • 文件是否可能被文件过滤功能拒绝?如果你 console.log file 在函数的顶部,首先你会得到什么?
  • fileFilter 函数由于某种原因对我不起作用。我试图放置一个console.log并进行调试,但该功能可能没有触发@MaximOrlov
  • 文件似乎没有正确通过后端。认为它可能是前端的东西。您可以尝试改用formData.append('image', selectedFiles[0]); formData.append('image', selectedFiles[1]); ... 并分别附加每个文件吗?

标签: javascript node.js rest express multer


【解决方案1】:

将每个文件单独附加到表单中:

for (const file of selectedFiles) {
  formData.append('image', file);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-23
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    • 2020-09-26
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多