Отображение смешанного контента в динамически генерируемой HTML-странице - PullRequest
0 голосов
/ 09 августа 2011

У меня есть два файла .png, которые я хотел бы отобразить вместе с текстом на html-странице, которая динамически генерируется Perl.В идеальном мире это будет макет из трех столбцов с текстом в первом столбце и двумя файлами .png во втором и третьем столбцах.Проблема, с которой я постоянно сталкиваюсь, заключается в необходимости одного из этих тегов:

print "Content-type: image/png\n\n";
print "Content-type: text/html\n\n";

Я могу включить только один в HTML, и это означает, что я могу отображать только текст или изображения, но не оба.

Очевидно, что должен быть способ сделать это, но до сих пор Google не получил меня никуда.

Любой совет приветствуется.

С уважением.


Вот операторы печати, которые я использую для генерации динамического HTML:

   print "<html>";
   print "<head>";
   print "Content-type: text/html\n\n";
   print "</head>";
   print "<body>";
   print "<table>";
   print "<tr><td>Number of Sentences = $numSentences</td><td rowspan=\"4\"><img src=\"/home/kfarmer/public_html/kevin/charFreq.png\" /></td><td rowspan=\"4\"><img src=\"/home/kfarmer/public_html/kevin/charFreq.png\" /></td></tr>";
   print "<tr><td>Number of Words = $numWords</td></tr>";
   print "<tr><td>Number of Unique Words = $numUniqueWords</td></tr>";
   print "<tr><td>Number of English Characters = $numEnglishCharacters</td></tr>";
   print "</table></body></html>";

Однако теперь, когда я генерирую эту страницу, я получаю всплывающее окно, спрашивающее меня, как бы я хотел открыть файл - ифайл - это то, что я напечатал выше.

Ответы [ 3 ]

1 голос
/ 09 августа 2011

Один HTTP-ответ отправляет одну вещь, и каждая вещь получает свой собственный заголовок контента.Вам не нужно включать все, что будет на странице, в один ответ.

В Perl просто создайте ссылку на файлы изображений, используя для этого функции HTML.В HTML вы должны включить:

 <img src="url to PNG"/>

Если есть сценарий CGI, обслуживающий динамическое изображение, вам просто нужно сослаться на него в HTML:

 <img src="/cgi-bin/imager.png?key=value;..."/>

ЭтоСценарий CGI должен возвращать правильный тип содержимого для того, что он отправляет, будь то HTML или данные изображения.

Браузер интерпретирует HTML, просматривает ссылки на изображения и делает дополнительные запросы для получения изображений.

0 голосов
/ 10 августа 2011

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

Я заметил, что ваш img src - '/ home / kfarmer / public_html/kevin/charFreq.png'

Итак, если корнем вашего веб-сервера является '/ home / kfarmer / public_html / kevin' и это то, что будет загружаться при переходе на someurl.com, тогда ваш img src должен простобыть '/charFreq.png'

Если корнем вашего сервера является' / home / kfarmer / public_html ', тогда ваш img src должен быть' kevin / charFreq.png '

Это большесложнее, так как URL-адреса относительно того, откуда загружается страница.

Итак, если страница www.someurl.com/kevin/anotherfolder/mypage.html и вы хотите загрузить изображение в 'kevin / someotherplace / charFreq.png 'тогда вам нужно, чтобы ваш img src был либо' /kevin/someotherplace/charFreq.png 'OR' ../someotherplace/charFreq.png'

0 голосов
/ 09 августа 2011

Боюсь, вы путаете некоторые определения / технологии.

Context-type является частью HTTP-заголовка . Когда ваш браузер выбирает веб-страницу, он обычно использует HTTP, который состоит из нескольких полей заголовка и блока данных (например, содержит данные, которые были запрошены). Если вы используете (приличный) веб-сервер, вам не нужно беспокоиться о заголовках HTTP (обычно).

Чтобы отобразить страницу с тремя столбцами, с двумя (или любым другим числом) изображениями и некоторым текстом. Вам нужно сгенерировать HTML-страницу . На этой странице вы сообщаете браузеру, что он должен загрузить изображения и представить их вместе с текстом.

Для этого вам нужно сгенерировать HTML-страницу в заранее заданном формате, содержащем так называемые элементы:

<html>
  <head><title>mypage</title></head>
  <body>
    This is the visible part of the page
  </body>
</html>

Теперь в элементе body вы можете создавать текст и изображения. Изображения могут быть размещены на странице с помощью элемента img .

Проверьте w3schools для более подробных учебных пособий по этим предметам. Если вы приобрели некоторые базовые знания, вы можете попытаться сгенерировать HTML-страницу, используя perl (или любой другой язык сценариев).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...