【发布时间】:2017-06-05 20:08:20
【问题描述】:
您好,我正在使用 MongoLab 和 Multer 在 heroku 上运行最终项目来上传照片似乎工作正常,但几个小时或更短时间后,照片从页面上消失,但留下了 img 占位符和另一个字段,如名称或日期区域它在哪里。
这是 Heroku 或 Mongolab 的问题,还是只是免费帐户是因为免费帐户。同样,上传一张照片或十几张照片也没关系,它们仍然会在一段时间后消失。
你能帮帮我吗? Multer 或我的数据库是否存在 hack、棘手的代码行或我做错了什么?我对网络和 Stack-Overflow 进行了深入研究,我发现了一个叫做 GRIDfs 的东西,但我不知道这是否可行。你能告诉我我是否正确吗?
这是我的 Multer 代码:
var express = require("express"),
body_parser = require("body-parser"),
multer = require("multer"),
mongoose = require("mongoose");
var app = express();
//connect my local database to MongoLab database
var url = process.env.DATABASE || "mongodb://localhost/black_hat";
mongoose.connect(url);
多重配置
var storage = multer.diskStorage({
destination: function(req, file, callback){
callback(null, "./public/uploads");
},
filename: function(req, file, callback){
callback(null, Date.now() + file.originalname);
}
});
var upload = multer({storage : storage}).single("image");
我的 POST 路线
app.post("/fotos_videos", isLoggedIn, function(req, res) {
upload(req, res, function(err) {
if(err){
return res.end("Error uploading file");
}
// get data from form
var newName = req.body.name,
newCover = "/uploads/" + req.file.filename;
// Packing into an object
var newCollage = {
name : newName,
cover: newCover
};
//create new album
Collage.create(newCollage, function(err, collage) {
if(err){
console.log(err);
} else {
// console.log(collage);
res.redirect("/fotos_videos");
}
});
});
});
我上传图片的表单
<div style="width=30%; margin: 30px auto" >
<form action="/fotos_videos" method="POST" enctype="multipart/form-data">
<div class="form-group">
<label>Album Name</label>
<input type="text" name="name" placeholder="Album Name" class="form-control">
</div>
<div class="form-group">
<label>Choose Album Cover</label>
<input type="file" name="image" placeholder="image url" class="form-control" required>
</div>
<div class="form-group">
<button class="btn btn-lg btn-primary btn-block">Upload</button>
</div>
</form>
<a href="/fotos_videos">Back</a>
</div>
最后是我的拼贴模型
var mongoose = require("mongoose");
// Schema
var collageSchema = new mongoose.Schema({
name : String,
cover : String,
photos: [{
type: mongoose.Schema.Types.ObjectId,
ref: "Photo"
}]
});
var Collage = mongoose.model("Collage", collageSchema);
module.exports = Collage;
我们将不胜感激任何形式的帮助。
【问题讨论】:
标签: node.js mongodb mongoose gridfs multer