Как конвертировать объект BLOB в шаблон E JS - PullRequest
0 голосов
/ 01 мая 2020

Я работаю над загрузкой фотографий пациентов, используя express, mongodb, multer, e js и cropp iejs. Когда пользователь загружает фотографию, у него есть возможность обрезать ее. Я сохраняю обрезанную фотографию в коллекции как объект BLOB в поле с именем croppedPhoto .

Теперь я хочу отобразить эту обрезанную фотографию на внешнем интерфейсе. Я передаю объект пациентов (который содержит все поля данных записи, включая обрезанную фотографию).

Я думаю о преобразовании этого объекта BLOB-объекта в base64 и его отображении. Но проблема в том, что я не уверен, как использовать croppedPhoto значение поля в шаблоне e js для его преобразования.

сервер. js [Поиск всех пациентов и передача в шаблон e js - включая поле croppedPhoto]

app.get('/', async (req, res) => {
    const patients = await Patient.find();
    res.render('index', { patients: patients });
});

index.e js [показать фотографию в теге img]

<div class="flex flex-wrap mt-10">
    <% patients.forEach(patient => { %>
    <div
        class="flex flex-col items-center justify-center h-auto lg:h-auto lg:w-32 flex-none bg-cover rounded-t lg:rounded-t-none lg:rounded-l text-center overflow-hidden">
        <img src="<%= patient.croppedPhoto %>" class="my-3 w-20 h-20 rounded-full" alt="Patient Photo">
    </div>
    <% }) %>
</div>

Спасибо !!

1 Ответ

0 голосов
/ 01 мая 2020

Обычно, когда дело доходит до загрузки файлов на сервер, вы должны избегать сохранения самого файла в базе данных, вместо этого вы можете переместить файл с рабочего стола клиента в каталог, который вам нужен (папка с изображениями вашего приложения, где вы сохраните изображения), используя Express файл загрузки , и вы сохраните path этого файла в базе данных, обычно это будет примерно так: /images/test.png.

Здесь Вот пример:

router.route('/add').post(function (req, res) {
if (req.files && req.body.name) {
    var file = req.files.file
    // to move the file to the direct i want !
    file.mv("client/public/img/client/categories/" + file.name, err => {
        if (err) {
            console.error(err);
            return res.status(500).send(err);
        }
    });
    var newCategorie = new Categorie({
        name: req.body.name,
        imgUrl: "/img/client/categories/" + file.name // TO SAVE THE PATH
    });


    }
   newCategorie
        .save()
        .then(categories => res.json(categories))
        .catch(err => res.status(400).json('Error: ' + err));
} else {
    res.status(400).json({ msg: "Please enter all fields" });
}
});

Тогда в вашем шаблоне E JS было бы очень легко получить доступ к sr c изображения: <img src="OBJECT.ImgURL" />

...