В моем Nest.js API у меня есть GET, который должен возвращать строку ответа, вместе с (до) 6 файлами изображений (в кодировке base64), в Response.
Что я могу сделать это:
6 столбцов в БД содержат уникальные имена файлов (фактические изображения находятся в папке «image-uploads»), и вместе с путем я могу использовать декоратор @Res для отправки любого одного из них назад, например
@Get('/findVehicleEntry/:id')
async findVehicleEntry(@Param('id') id: number, @Res() res) {
const resVehicle: Vehicle = await this.vehiclesService.findVehicleEntry(id);
if (resVehicle) {
res.sendFile(resVehicle.photo1, { root: 'image-uploads' });
}
}
Выше успешно загружает один файл изображения в виде Content-Type: "application / octet-stream"
Мой план (и я не знаю, как это сделать):
Во-первых, получите изображение из папки и в переменную , затем запустите на нем кодировку base64, затем установите resVehicle.photo1 равным этой строке base64 и сделайте то же самое для остальных 5 изображений , затем сделайте res.send (resVehicle);
Примерно так:
@Get('/findVehicleEntry/:id')
async findVehicleEntry(@Param('id') id: number, @Res() res) {
const resVehicle: Vehicle = await this.vehiclesService.findVehicleEntry(id);
if (resVehicle) {
let image = something.get('resVehicle.photo1', 'my/path/to/image-uploads');
image = Buffer.from(image).toString('base64');
resVehicle.photo1 = image;
// do the same for the other 5 images
res.send(resVehicle);
}
}
Это первый раз, когда я использовал Nest / Express / Node, фактически это первый API, который я написал, поэтому моя идея / дизайн могут быть полностью отключены. Любые предложения приветствуются. Большое спасибо.
Редактировать: читать, что кодирование больших файлов с помощью base64 не очень хорошая идея. Я рад отбросить идею base64, главный вопрос в том, как получить мой объект JSON строки БД и 6 изображений в одном ответе?