В настоящее время в моем проекте я сохраняю файлы изображений в MongoDB с помощью multer. Я делаю это, конвертируя изображение в формат base64, а затем сохраняя эти данные. Это работает, но занимает много места в базе данных, замедляя работу моего приложения. Мне было интересно, есть ли способ преобразовать файл в URL-адрес, а затем сохранить этот URL-адрес в базе данных.
Это будет выглядеть примерно так: iVBORw0KGgoAAAANSUhEUgAAAyAAAAMgCAIAAABU ...
Примерно так: something.com/imageurl.
Вот мой текущий код:
var multer = require("multer");
var upload = multer({
storage: multer.memoryStorage(),
limits: {fileSize: 1 * 2048 * 2048},
fileFilter: function fileFilter(req, file, cb){
if(file.mimetype !== 'image/png' | "image/jpg" | "image/jpeg"){
return cb(new Error('Something went wrong'), false);
}
cb(null, true);
}
}).fields([{ name: 'fileone', maxCount: 1 }, { name: 'filetwo', maxCount: 1 }]);
module.exports = upload;
app.post("/create", function(req, res){
upload(req, res, function(err){
if(err){
res.render("create", {msg: "Error: Please Keep each file under 1mb and only upload PNG, JPG, or JPEG images"});
} else{
var fileOne = req.files["fileone"][0].buffer.toString("base64");
var fileTwo = req.files["filetwo"][0].buffer.toString("base64");
var title = req.body.title;
var newPosts = {title: title, fileOne: fileOne, fileTwo: fileTwo}
Post.create(newPosts, function(err, newlyCreated){
if (err){
console.log(err);
} else{
res.redirect("/posts/" + newlyCreated._id);
}
});
}
});
})