Я работаю над загрузкой фотографий пациентов, используя экспресс, mongodb, multer, ejs иcroppiejs. Когда пользователь загружает фотографию, у него есть возможность обрезать ее. Я сохраняю обрезанное фото в коллекции как объект BLOB в поле с именем croppedPhoto.
Теперь я хочу отобразить эту обрезанную фотографию во внешнем интерфейсе. Я передаю объект пациентов (который содержит все поля данных записи, включая обрезанное фото).
Я думаю о преобразовании этого объекта blob в base64 и его отображении. Но проблема в том, что я не уверен, как использовать значение поля croppedPhoto в шаблоне ejs для его преобразования.
server.js [Поиск всех пациентов и переход к шаблону ejs — также включает полеcropedPhoto]
app.get('/', async (req, res) => {
const patients = await Patient.find();
res.render('index', { patients: patients });
});
index.ejs [хотите отобразить фото в теге 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 ответ
Обычно, когда дело доходит до загрузки файлов на сервер, вам следует избегать сохранения самого файла в базе данных, вместо этого вы можете переместить файл с рабочего стола клиента в нужный каталог (папка с изображениями вашего приложения, где вы храните изображения). ) с помощью Экспресс-загрузки файлов и сохранить 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" });
}
});
Тогда в вашем шаблоне EJS будет очень легко получить доступ к src изображения: <img src="OBJECT.ImgURL" />
Похожие вопросы
Новые вопросы
node.js
Node.js — это основанная на событиях, неблокирующая, асинхронная среда выполнения ввода-вывода, использующая движок Google V8 JavaScript и библиотеку libuv. Он используется для разработки приложений, которые интенсивно используют возможность запуска JavaScript как на стороне клиента, так и на стороне сервера и, следовательно, выигрывают от возможности повторного использования кода и отсутствия переключения контекста.