cfimage из двоичного файла в cfdocument

Я пишу PDF-файл динамически и создаю QR-код в документе для целей электронных билетов

я установил свой cfdocument localurl=yes, чтобы включить другое изображение, которое работает нормально, но так как я использую вызов API, чтобы получить двоичный файл для qrCode, используя cfimage для отображения изображения, он показывает только красный X

<cfdocument format="PDF"  overwrite="Yes" localUrl="yes" pageType = "letter">
<body>
<cfoutput>
<section id="header">

<img src="file:///#ExpandPath('images/header.png')#"/>
<cfimage action="writeToBrowser" source="#rc.qrCode#" />
</cfoutput>
</body>
</html>
</cfdocument>

исходная переменная rc.qrCode - это двоичный ответ, который прекрасно работает, пока я не помещу его в cfdocument, он генерирует URL-адрес, подобный этому http://mysite/CFFileServlet/_cf_image/_cfimg-7945382145198648283.PNG как источник изображения

я уверен, что это связано с localurl и file:///, я просто недостаточно осведомлен, чтобы знать, почему

1 ответ

Не нужно использовать физический путь, а использовать относительный путь к вашей странице. Например, если вы кодируете в index.cfm корневой папки и изображение внутри папки изображений

попробуйте , обратите внимание, что он не должен начинаться с корневого пути, а относительно вашего файла.

ОБНОВИТЬ

writetoBrowser внутренне записывает файл на жесткий диск во его временное местоположение (локально, C:\ColdFusion10\cfusion\tmpCache\CFFileServlet) и при рендеринге его в браузер использует относительный путь, например "/CFFileServlet/_cf_image/_cfimg1592404668342998556.PNG" что ColdFusion внутренне сопоставляет каталог CFFileServlet со всеми сайтами coldfusion, но замечает косую черту, и это создает проблему с localurl=true. Поскольку localurl = true, либо нужен физический путь, либо относительный путь к вашему документу.

Хорошая идея - вместо writetobrowser вы можете записать одно и то же изображение на жесткий диск в вашем местоположении и указать физический путь в теге img. Я не думаю, что это приведет к проблемам с производительностью, поскольку ColdFusion внутренне делает то же самое, когда вы используете атрибут writetobrowser:)

Другие вопросы по тегам