【问题标题】:how to handle files with JSON data in express如何在快递中处理带有 JSON 数据的文件
【发布时间】:2021-03-07 15:56:55
【问题描述】:

我正在为快速 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 和文件?

【问题讨论】:

    标签: javascript node.js express multer


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

      您不能同时使用 JSON 和文件。但是您可以将其转换为 2 个请求,或者您可以将图像文件保存为 base64 字符串并将其与 res.json 中的响应一起发送

      res.json({... your data, 
      "base64image" : "base64 string "})
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-05-09
        • 2018-05-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多