如何在 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 文件夹,里面的所有项目都将从那里提供。
您不能同时使用JSON和文件。但您可以将其转换为 2 个请求,或者您可以将图像文件保存为 base64 字符串并在 res.json
中将其与您的响应一起发送
res.json({... your data,
"base64image" : "base64 string "})
我正在努力处理 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 文件夹,里面的所有项目都将从那里提供。
您不能同时使用JSON和文件。但您可以将其转换为 2 个请求,或者您可以将图像文件保存为 base64 字符串并在 res.json
中将其与您的响应一起发送res.json({... your data,
"base64image" : "base64 string "})