【发布时间】:2020-12-28 21:40:17
【问题描述】:
我的 post 方法是我用来上传文件并将它们存储在本地目录中的文件夹中的 API 的一部分。当用户上传文件时,它会存储在本地目录中,并且图像的路径会记录在控制台中。我正在尝试将 POST 方法中记录的路径渲染到我在 get 路由中渲染的 EJS 模板。我是新来表达和节点有什么办法可以做到这一点?这是我的代码:
const storage = multer.diskStorage({
destination: './upload/images',
filename: (req, file, cb) => {
return cb(null, `${file.fieldname}_${Date.now()}${path.extname(file.originalname)}`)
}
})
const upload = multer({
storage: storage,
limits:{
fileSize: 10485760
}
})
app.post("/upload", upload.single('profile'), (req, res) => {
res.redirect("/main")
let imgPath = req.file.path;
console.log(imgPath);
})
function errHandler(err, req, res, next) {
if (err instanceof multer.MulterError) {
res.json({
success: 0,
message: err.message
})
}
}
app.use(errHandler);
此日志 “upload\images\profile_1609158104360.jpg”
我的 get 函数试图从 /upload 发布路径访问记录的路径
app.get("/main", function (req, res) {
if (req.isAuthenticated()) {
// res.render("main");
User.find({ "secret": {$ne: null}}, function(err, foundUser, imgPath){
if(err){
console.log(err);
}else{
if(foundUser){
res.render("main", {
usersWithSecrets: foundUser,
usersWithImage: imgPath
});
console.log(imgPath);
}
}
}
);
} else {
res.redirect("/login");
}
});
【问题讨论】: