Можете ли вы сохранить файл изображения как URL-адрес в базе данных, используя node js? - PullRequest
0 голосов
/ 07 августа 2020

В настоящее время в моем проекте я сохраняю файлы изображений в 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);
        }
        });
    }
});

})

1 Ответ

0 голосов
/ 07 августа 2020

Вы можете сохранить файл на диск и поместить путь к файлу в базу данных:

Вместо использования multer.memoryStorage вы можете использовать multer.diskStorage.

В вашем upload метод req.files тогда будет содержать массив путей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...