Служить как текстовые, так и графические данные при визуализации шаблона - PullRequest
0 голосов
/ 07 июня 2019

Попытка отправить как текстовые, так и графические данные в качестве локальных переменных на визуализированную страницу на стороне сервера с использованием шаблонов.
Я знаю, что должен установить тип контента как 'image / png'.
Как я могуустановить Content-Type для одной переменной, когда все остальные переменные являются текстовыми?
Большое вам спасибо!

res.render('profile.html', { locals: {
  tasks: tasks,
  msgExists: '',
  name: req.user.name,
  email: req.user.email,
  photo: req.user.photo //how to set Content-Type for this variable?
}});

1 Ответ

0 голосов
/ 07 июня 2019

шаблон отображается на стороне сервера, а затем отправляется клиенту. это означает, что тип содержимого ответа «text / html», а не «image / png».

ваши переменные не имеют "Content-Type", так как они не являются HTML-ответами. если вы хотите встроить изображение в html и знаете его необработанные данные, оно обычно выглядит так:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="/>

теперь, если у вас есть данные изображения (как и любые другие после части base64), как-то сохраненные в переменной JS, и вы хотите передать их вашему шаблону визуализации, чтобы вставить это изображение в результирующий html, это будет выглядеть так:

// node js code:
imgData = "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==";
res.render('my.template.html', {
  imgData, 
  // whatever else ...
});
  <!-- template code: -->

  <img src="data:image/png;base64,{{imgData}}"/>

  <!-- whatever else -->

конечно, это может немного измениться в зависимости от того, в каком именно формате вы храните данные изображения.

...