Я пытаюсь загрузить изображение, используя multer
, mongoose
и express
. Загруженное изображение сохраняется в базе данных MongoDB
, но я не могу отобразить его позже. Он говорит, что указанный файл не найден и выдает 404 error
в console
Вот мой app.js
для него:
var express = require("express"),
app = express(),
bodyParser = require("body-parser"),
mongoose = require("mongoose");
var multer = require('multer')
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads')
},
filename: function (req, file, cb) {
cb(null, Date.now() + file.originalname);
}
})
var upload = multer({ storage: storage,
limit: {
fileSize: 5000 * 5000 * 60
},
fileFilter: fileFilter
});
var fileFilter = (req, file, cb) => {
if(file.mimetype === 'image/jpeg' || file.mimetype === 'image/png') {
cb(null, true);
} else {
cb(null, false);
}
};
mongoose.connect("mongodb://localhost/restfulblog", {useNewUrlParser: true, useUnifiedTopology: true, useFindAndModify: false});
app.set("view engine", "ejs");
app.use(express.static("public"));
app.use("uploads/", express.static("uploads"));
app.use(bodyParser.urlencoded({extended: true}));
app.use(sanitizer());
app.use(methodOverride("_method"));
var blogSchema = new mongoose.Schema({
title: String,
image: String,
body: String,
createDate: {type: Date, default: Date.now}
});
var blog = mongoose.model("blog", blogSchema);
app.get("/", function(req, res) {
res.redirect("/blogs");
})
// 1 INDEX ROUTE
app.get("/blogs", function(req, res) {
blog.find({}, function(err, blogs) {
if(err) {
console.log(err);
} else {
res.render("index", {blogs: blogs});
}
});
});
// 2 NEW ROUTE
app.get("/blogs/new", function(req, res) {
res.render("new");
});
// 3 CREATE ROUTE
app.post("/blogs", upload.single("image"), function(req, res) {
console.log(req.file.path);
var title = req.body.title;
var image = req.file.path;
console.log(image)
var body = req.body.body;
var newBlog = {title: title, image: image, body: body};
blog.create(newBlog, function(err, newBlog) {
if(err) {
console.log(err.message);
res.redirect("new");
} else {
res.redirect("back");
}
});
});
Вот мой e js file
<%- include("partials/header")%>
<div class="ui main text container">
<div class="ui huge header">Naruto Blog App</div>
<div class="ui top attached segment">
<div class="ui divided items">
<% blogs.forEach(function(blog) { %>
<div class="item">
<div class="image">
<img src="<%= blog.image %>">
</div>
<div class="content">
<a class="header" href="/blogs/<%= blog._id%>"><%= blog.title %></a>
<div class="meta">
<span><%= moment(blog.createDate).format('MMMM D, YYYY') %></span>
</div>
<div class="description">
<p><%= blog.body %>...</p>
</div>
<div class="extra">
<a class="ui floated orange button" href="/blogs/<%= blog._id%>">Read More <i class="hand point right outline icon"></i></a>
</div>
</div>
</div>
<% }); %>
</div>
</div>
</div>
<%- include("partials/footer")%>
Пожалуйста, помогите мне решить проблему