我正在嘗試加載從表單上傳到索引頁面的影像。我在 app.js 檔案中正確映射了我的公共檔案夾,并且它的結構使得任何影像都位于“/public/assets/img/filename.ext”
我對拋出錯誤的博客文章的架構是:
// schema setup
var mongoose = require("mongoose");
var postSchema = new mongoose.Schema({
title: String,
image: String,
uploadedImage: {
data: Buffer,
contentType: String,
},
dest: String,
postdata: String,
excerpt: String,
tag: String,
icon: String,
color: String,
featured: String,
keywords: String,
description: String,
slug: String,
create: {type: Date, default: Date.now},
author: {
id: {
type: mongoose.Schema.Types.ObjectId,
ref: "User"
},
username: String
},
});
module.exports = mongoose.model("Posts", postSchema);
此架構由我創建的具有以下路由結構的表單填充:
require("dotenv").config();
const express = require("express"),
router = express.Router(),
Posts = require("../models/blog"),
upload = require("../middleware/upload"),
path = require('path'),
fs = require('fs'),
middleware = require("../middleware"),
slugify = require('slugify');
// CREATE
router.post("/", middleware.isLoggedIn, middleware.isAdmin, upload.single('uploadedImage'), function(req,res){
var title = req.body.title;
var image = req.body.image;
var postdata = req.body.postdata;
var exceprt = req.body.excerpt;
var tag = req.body.tag;
var icon = req.body.icon;
var color = req.body.color;
var featured = req.body.featured;
var keywords = req.body.keywords;
var description = req.body.description;
var dest = req.file.filename;
var slug = slugify(title);
var uploadedImage = {
data: fs.readFileSync(path.join('./public/assets/img/' req.file.filename)),
contentType: 'image/png'
};
var author = {
id: req.user._id,
username: req.user.username
};
// link dB to post values
var newPost= {title:title, slug:slug, image:image, postdata:postdata, excerpt:exceprt, tag:tag, icon:icon, color:color, featured:featured, author:author, keywords:keywords, description:description, dest:dest, uploadedImage:uploadedImage};
Posts.create(newPost, function(err, newlyCreated) {
if (err){
console.log(err);
}else{
console.log("slug:" slug);
console.log(req.file.path);
res.redirect("/blog");
}
});
});
為了在我的 EJS 中提供它,我在回圈中這樣稱呼它:
<% Posts.forEach(function(post){ %>
<img src="/assets/img/<%= post.dest %>" class="img-fluid" />
<% }); %>
結果是我的公用檔案夾的正確路徑,但是每次說該檔案不存在時,我都會收到 404 錯誤。我已經檢查過并且檔案確實存在,所以我對為什么會收到這個錯誤有點迷茫。我已經在本地級別和 AWS C9 控制臺進行了測驗,但是當我推送到 Heroku 上的暫存站點時,我得到了錯誤。
任何建議或代碼更正都會有所幫助。
uj5u.com熱心網友回復:
在您升級到付費測功機之前,任何使用 Heroku 的人都會遇到這個問題。請參閱顯示免費層進入休眠狀態的Heroku 檔案。由于他們的系統是瞬態的,并且當測功機休眠時,它會清除所有上傳的檔案,這就是我的影像沒有出現在模板中的原因。我對此進行了測驗,并與銷售代表確認,因為他們試圖洗掉他們的免費套餐,所以這個設定是固定的,會導致資料丟失。希望這對某人有幫助,干杯!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/518588.html
上一篇:洗掉numpy陣列中的連續重復項
