如何在 express 中处理带有 JSON 数据的文件

how to handle files with JSON data in express

我正在努力处理 express js 中的文件上传。 我有这个猫鼬方案:

{
title: {
    type: String,
    required: true,
    min: 1,
    max: 1024,
},

whatToRead: [{ type: String }],

questions: [
    {
        question: {
            type: String,
            required: true,
        },
        options: [
            {
                option: String,
                correct: {
                    type: Boolean,
                    default: false,
                },
            },
        ],
    },
],

date: {
    type: Date,
    default: Date.now,
},

我可以使用以下代码轻松地向数据库添加新项目:

const { title, whatToRead, questions} = req.body;
const quiz = new Quiz({
    title,
    whatToRead,
    questions,
});
try {
    await quiz.save();
    res.send({ msg: "saved", id: quiz.id });
} catch (err) {
    res.status(400).send(err.message);
}

但是现在我需要为项目添加图像。我尝试用 multer 来做,它成功了,但是我无法发送包含所有其他信息的 json 文件,因为它必须是 multipart/form-data,而不是 json。我怎样才能同时发送 json 和文件?

您不能在同一个响应中同时发送 JSON 和文件。最佳做法是将 imageUrl 发送到图像。

res.json({ msg: "saved", id: quiz.id, imageUrl: 'http:\localhost:8080\testImage.jpg' })

您发送的图像 url 将引用使用静态中间件使用您的快速服务器提供的文件。您将在服务器中有一个 public 文件夹,里面的所有项目都将从那里提供。

更多信息在这里: https://expressjs.com/en/starter/static-files.html

您不能同时使用JSON和文件。但您可以将其转换为 2 个请求,或者您可以将图像文件保存为 base64 字符串并在 res.json

中将其与您的响应一起发送
res.json({... your data, 
"base64image" : "base64 string "})