Node.js 使用multer在平均堆栈中上载多个图像
嘿,伙计们,我是新来的,是指堆栈开发和whle学习,我能够使用node.js中的multer将单个图像上传到mongo db,并在angular上选择1个图像。但是现在我想通过这个方法将多个图像上传到系统中。我尝试了很多可用的教程,但到目前为止都是徒劳的。如果有人能帮我 我的角度HTML代码:Node.js 使用multer在平均堆栈中上载多个图像,node.js,angular,mongodb,mongoose,mean-stack,Node.js,Angular,Mongodb,Mongoose,Mean Stack,嘿,伙计们,我是新来的,是指堆栈开发和whle学习,我能够使用node.js中的multer将单个图像上传到mongo db,并在angular上选择1个图像。但是现在我想通过这个方法将多个图像上传到系统中。我尝试了很多可用的教程,但到目前为止都是徒劳的。如果有人能帮我 我的角度HTML代码: 岗位控制员 exports.createPost = (req, res, next) => { const url = req.protocol + '://' + req.get(
岗位控制员
exports.createPost = (req, res, next) => {
const url = req.protocol + '://' + req.get("host");
const post = new Post({
//basic car info
city: req.body.city,
make: req.body.make,
model: req.body.model,
registrationcity: req.body.registrationcity,
mileage: req.body.mileage,
exteriorcolor: req.body.exteriorcolor,
description: req.body.description,
//price
price: req.body.price,
//images
imagePath: url + "/images/" + req.file.filename,
//addition information
enginetype: req.body.enginetype,
enginecapacity: req.body.enginecapacity,
transmission: req.body.transmission,
assembly: req.body.assembly,
features: req.body.features,
//contact authInformation
mobilenumber: req.body.mobilenumber,
/*
title:req.body.title,
model:req.body.model,
engine:req.body.engine,
location:req.body.location,
content:req.body.content,
*/
creator: req.userData.userId
});
post.save().then(createdPost => {
res.status(201).json({
messgae: "Post Added Sucessfully",
post:
{
...createdPost,
id: createdPost._id,
}
});
}).catch(error => {
res.status(500).json({
messgae: "Creating Post Failed!"
});
});
}
路线:
router.post("",checkAuth, extractFile ,PostController.createPost);
img的多重授权:
const multer=require('multer')
有人能帮我上传多张图片的代码吗
addPost(city: string, make: string, model: string, registrationcity: string, mileage: string, exteriorcolor: string, description: string, price: string, image: File, enginetype: string, enginecapacity: string, transmission: string, assembly: string, features: string, mobilenumber: string)
//title:string,model:string,engine:string,location:string, content:string , image:File
{
//const post: Post = {id: null, title:title ,content:content};
const postData = new FormData();
//basic car information
postData.append("city", city);
postData.append("make", make);
postData.append("model", model);
postData.append("registrationcity", registrationcity);
postData.append("mileage", mileage);
postData.append("exteriorcolor", exteriorcolor);
postData.append("description", description);
//price
postData.append("price", price);
//images
postData.append("image", image, make + model);
//additional Information
postData.append("enginetype", enginetype);
postData.append("enginecapacity", enginecapacity);
postData.append("transmission", transmission);
postData.append("assembly", assembly);
postData.append("features", features);
//contact information
postData.append("mobilenumber", mobilenumber);
this.http.post<{ message: string, post: Post }>
(BACKEND_URL, postData)
.subscribe((responseData) => {
this.router.navigate(["/"]);
});
}
This was the Angular Side and now its on node js side
const postSchema = mongoose.Schema({
//title = name
//basic car info
city: { type:String, required:true},
make:{ type:String, required:true},
model:{ type:String, required:true},
registrationcity:{ type:String, required:true},
mileage:{ type:String, required:true},
exteriorcolor:{ type:String, required:true},
description: { type:String, required:true },
//car price
price: { type:String, required:true },
//images
imagePath : { type:String, required:true },
//addtional information
enginetype: { type:String, required:true},
enginecapacity: { type:String, required:true},
transmission: { type:String, required:true},
assembly: { type:String, required:true},
features: { type:String, required:true},
//contacts information
mobilenumber: { type:String, required:true},
/*
title: { type:String, required:true },
engine: { type:String, required:true},
location: { type:String, required:true},
*/
creator: { type: mongoose.Schema.Types.ObjectId, ref: "User" , require: true }
});
module.exports = mongoose.model('Post',postSchema);
exports.createPost = (req, res, next) => {
const url = req.protocol + '://' + req.get("host");
const post = new Post({
//basic car info
city: req.body.city,
make: req.body.make,
model: req.body.model,
registrationcity: req.body.registrationcity,
mileage: req.body.mileage,
exteriorcolor: req.body.exteriorcolor,
description: req.body.description,
//price
price: req.body.price,
//images
imagePath: url + "/images/" + req.file.filename,
//addition information
enginetype: req.body.enginetype,
enginecapacity: req.body.enginecapacity,
transmission: req.body.transmission,
assembly: req.body.assembly,
features: req.body.features,
//contact authInformation
mobilenumber: req.body.mobilenumber,
/*
title:req.body.title,
model:req.body.model,
engine:req.body.engine,
location:req.body.location,
content:req.body.content,
*/
creator: req.userData.userId
});
post.save().then(createdPost => {
res.status(201).json({
messgae: "Post Added Sucessfully",
post:
{
...createdPost,
id: createdPost._id,
}
});
}).catch(error => {
res.status(500).json({
messgae: "Creating Post Failed!"
});
});
}
router.post("",checkAuth, extractFile ,PostController.createPost);
const MIME_TYPE_MAP =
{
'image/png': 'png',
'image/jpeg':'jpg',
'image/jpg':'jpg'
}
const storage = multer.diskStorage({
destination: (req, file, cb) =>
{
const isValid = MIME_TYPE_MAP[file.mimetype];
let error = new Error("Invalid Extension");
if(isValid)
{
error = null;
}
cb(error, "backend/images");
},
filename: (req, file, cb) =>
{
const name = file.originalname.toLowerCase().split(' ').join('-');
const ext = MIME_TYPE_MAP[file.mimetype];
cb(null, name + '-' + Date.now() + '-' + ext);
}
});
module.exports = multer({storage: storage}).single("image");