PROBLEM:
I click on submit in my upload.ejs and I get the error: "Cannot POST /upload"
var express = require("express");
var router = express.Router();
var flash = require("connect-flash");
var firebase = require("firebase");
var multer = require("multer");
var upload = multer({dest:"./public/images/uploads/"});
router.get("/", function(req, res, next){
res.render("upload");
});
router.post("/", upload.single("image"), function(req, res, next){
if (req.file){
console.log("Uploading file...");
var image = req.file.filename;
}
else {
console.log("No file uploaded");
var image = "noimage.jpg";
}
var post = {
title: req.body.title,
section: req.body.section,
image: image,
}
var section = req.body.section.toLowerCase();
firebase.database().ref("posts/"+section).push(post);
req.flash("success_msg", "Post Created");
res.redirect("/upload");
});
module.exports = router;
<form enctype="multipart/form-data" method="post" action="upload">
You are POSTing to /upload
url but you the route that you register is POST /users/upload
. Possibly you have to move the follwing function into the routes/index.js file:
router.post("/upload", upload.single("image"), function(req, res, next){
if (req.file){
console.log("Uploading file...");
var image = req.file.filename;
}
else {
console.log("No file uploaded");
var image = "noimage.jpg";
}
var post = {
title: req.body.title,
section: req.body.section,
image: image,
}
var postRef = fbRef.child("posts");
postRef.push().set(post);
req.flash("success_msg", "Post Created")
res.redirect("/"+ req.body.section.toLowerCase());
});