在 node.js 中上传多张图片时出错
Error uploading multiple images in node.js
我正在尝试在 mongo 数据库中上传图片,但在邮递员中单击发送后,它显示“img”:null
我在前端使用 flutter,所以我想休息一下 api 我可以上传单张图片,但是当我尝试上传多张图片时,它显示
“img”:空
我也创建了一个模式
我设置的地方
img:{
type: array,
default:"",
}
const express = require("express");
const router = express.Router();
const Profile = require("../models/profile.model");
const middleware = require("../middleware");
const multer = require("multer");
const path = require("path");
const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, "./uploads");
},
filename: (req, file, cb) => {
cb(null, req.decoded.username + ".jpg");
},
});
const fileFilter = (req, file, cb) => {
if (file.mimetype == "image/jpeg" || file.mimetype == "image/png") {
cb(null, true);
} else {
cb(null, false);
}
};
const upload = multer({
storage: storage,
limits: {
fileSize: 1024 * 1024 * 6,
},
// fileFilter: fileFilter,
});
//adding and update profile image
router
.route("/add/image")
.patch(middleware.checkToken, upload.array("img",5), (req, res) => {
Profile.findOneAndUpdate(
{ username: req.decoded.username },
{
$set: {
img: req.files.path,
},
},
{ new: true },
(err, profile) => {
if (err) return res.status(500).send(err);
const response = {
message: "image added successfully updated",
data: profile,
};
return res.status(200).send(response);
}
);
});
当您上传多张图片时,multer 会像这样创建一个对象数组:
req.files : [{…}, {…}, {…}]
属性个对象之一是路径,所以有很多方法可以插入到img
中的路径。
如果 img
的类型在模式中定义了 array []
你可以在 findOneAndUpdate
中这样做:
{
$set: {
img: req.files.map(file => file.path),
},
}
我正在尝试在 mongo 数据库中上传图片,但在邮递员中单击发送后,它显示“img”:null
我在前端使用 flutter,所以我想休息一下 api 我可以上传单张图片,但是当我尝试上传多张图片时,它显示 “img”:空
我也创建了一个模式
我设置的地方
img:{
type: array,
default:"",
}
const express = require("express");
const router = express.Router();
const Profile = require("../models/profile.model");
const middleware = require("../middleware");
const multer = require("multer");
const path = require("path");
const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, "./uploads");
},
filename: (req, file, cb) => {
cb(null, req.decoded.username + ".jpg");
},
});
const fileFilter = (req, file, cb) => {
if (file.mimetype == "image/jpeg" || file.mimetype == "image/png") {
cb(null, true);
} else {
cb(null, false);
}
};
const upload = multer({
storage: storage,
limits: {
fileSize: 1024 * 1024 * 6,
},
// fileFilter: fileFilter,
});
//adding and update profile image
router
.route("/add/image")
.patch(middleware.checkToken, upload.array("img",5), (req, res) => {
Profile.findOneAndUpdate(
{ username: req.decoded.username },
{
$set: {
img: req.files.path,
},
},
{ new: true },
(err, profile) => {
if (err) return res.status(500).send(err);
const response = {
message: "image added successfully updated",
data: profile,
};
return res.status(200).send(response);
}
);
});
当您上传多张图片时,multer 会像这样创建一个对象数组:
req.files : [{…}, {…}, {…}]
属性个对象之一是路径,所以有很多方法可以插入到img
中的路径。
如果 img
的类型在模式中定义了 array []
你可以在 findOneAndUpdate
中这样做:
{
$set: {
img: req.files.map(file => file.path),
},
}