Отображение изображения в cfdocument - PullRequest
0 голосов
/ 04 ноября 2019

Я сохраняю изображения в моем поле базы данных, например data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAg......

Когда я отображаю изображения с помощью <cfimage action="writeToBrowser" source="#myField#"> на обычной странице, все работает нормально. При использовании в cfdocument это не работает. Я видел некоторые подобные проблемы, но не видел, чтобы какая-то из них работала на меня. Я пытался <img src="#myField#" />, но безуспешно. Кто-нибудь, чтобы это работало?

Спасибо

1 Ответ

0 голосов
/ 05 ноября 2019

Когда я видел это раньше, браузер CF на этом сервере не смог подключиться к петле /CFFileServlet/_cf_image/_cfimg-...PNG через петлю на этом поле. Точная причина и решение будут зависеть от того, как настроены ваш веб-сервер, конфигурация сайта, SSL, брандмауэр, маршрутизация, DNS.

Вы просматривали журналы ошибок в CF Admin для запросов с ошибками изображения? Если у вас нет подсказок, то один из способов помочь определить причину сбоя - обернуть ваш код <cfimage action="writeToBrowser" в тег <cfsavecontent> или <cfxml>, чтобы извлечь URL src из записанного временного изображения, а затем посмотреть, какой результат вы получите. получить, если вы попытаетесь нажать тот же URL-адрес с помощью cfhttp вызова с сервера - вы должны столкнуться с той же проблемой, что и cfdocument, но вы сможете сбросить любые ошибки для устранения неполадок.

В зависимости от причины в вашем случае, один из следующих методов должен работать:

  1. , если браузер CF не может разрешить свое собственное имя хоста, тогда добавьте домен сайта в локальный файл HOSTS вашего сервера;
  2. если при переходе из самого блока используется другой сайт vhost / IIS, чем из внешнего мира, убедитесь, что / CFFileServlet / mappings все еще видны на этом сайте;
  3. , еслиcfdocument / cfhttp получает ошибки SSL, т. е. если ваш сайт использует (или переписывает http на) https для этих запросов изображений, то убедитесь, что ваш сайтrts доверяют вашему хранилищу ключей CF;
  4. Убедитесь, что конфигурация брандмауэра не блокирует эти внутренние запросы.

Другие менее эффективные обходные пути, если у вас нет доступа для решения вышеупомянутого типа средыпроблемы:

a) переписать URL-адрес src с относительного URL-адреса на абсолютный file:/// URL-адрес при использовании только с cfdocument.

b) если на вашем сайте есть отображение localhost(на порту 80 или иным образом), который виден на вашем сервере, затем вы можете попробовать переписать URL-адрес src, чтобы использовать его вместо полного доменного имени.

c) вместо использования writeToBrowser запишите вывод cfimage в путьна ваш выбор, который вы можете доказать, работает с cfdocument / cfhttp и вывести свой собственный тег img для обслуживания изображения с этого пути.

По моему опыту, вы увидите множество постов о cfdocument и путях к изображениям ииспользуя localUrl=true - но там, где задействован cfimage writeToBrowser, я всегда обнаруживал, что мне нужно использовать localUrl=false и полагаться на абсолютные URL.

...