2011-08-09 102 views
0

我有两个.png文件,我想在由Perl动态生成的html页面中显示一些文本。在一个完美的世界里,这将是一个3列的布局,第一列中的文本和第二列和第三列中的两个.png文件。我一直跨越未来的问题是这些标签的一个需要:在动态生成的html页面中显示混合内容

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

我只能包括一个在HTML,这意味着我只能显示文字或图像而不是两个。

很明显,一定有办法做到这一点,但到目前为止谷歌已经没有得到我的位置。

任何意见表示赞赏。

问候。


这里是打印语句,我使用到generaate动态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>"; 

但是,现在当我生成这个网页,我得到一个弹出问我想怎么打开文件 - 这个文件就是我上面打印的文件。

+0

这没有意义:要么发送一个图像/ PNG(本身),或者你发送一个text/html文档,其中可能包含img src =标签,用于在HTML文档中嵌入图像。是的,您确实需要Content-type标头,但它与整个文档相对应。如果您只想发送图像,请使用图像/ png。否则,您通常需要text/html,然后使用HTML-fu将图像合并到文档中。 – DavidO

+0

我已经将png图像打印到文件,并且我试图使用​​将它们显示在html页面的主体中。如果我包含内容类型标题“Content-type:text/html \ n \ n”,则显示文本但不显示图像。将内容类型全部留出只会导致其他问题。我的HTML-fu功能不足以包含图像。 :-) – Schemer

+0

它实际上看起来像问题是你的img src引用指向* nix框上的绝对路径,而不是www url url。看到我的帖子下面。 – CaffGeek

回答

0

恐怕你混淆了一些定义/技术。

Context-typeHTTP header的一部分。当您的浏览器获取网页时,它通常使用HTTP,它由多个头字段和一个数据块(例如包含请求的数据)组成。如果你使用(体面的)网络服务器,你不需要担心HTTP头(通常)。

为了显示3列的页面,两个(或任何其他数量的)图像和一些文本。您需要生成HTML page。在此页面上,您告诉浏览器它应该下载图像并将其与文本一起显示。

为了做到,所以你必须生成一个预先定义的格式的HTML页面包含所谓的元素:

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

现在在主体元素,你可以生成你的文字和图片。可以使用img element将图像放置到页面上。

查看w3schools了解关于这些主题的更多教程。如果您获得了更多基础知识,则可以尝试使用perl(或任何其他(脚本)语言)生成HTML页面。

+0

我按照上面的例子,删除了内容类型的语句,但现在我得到了“脚本头文件过早结束”错误。 – Schemer

+0

你使用什么网络服务器?设置'Content-Type'HTTP头域取决于此。 – Veger

1

一个HTTP响应发送一件东西,每件东西都有自己的内容头。您无需在一个响应中包含页面中的所有内容。

从Perl,只需链接到使用HTML功能的图像文件。在HTML中,你会包括:

<img src="url to PNG"/> 

如果有服务了动态图像的CGI脚本,你只是链接到它的HTML:

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

那CGI脚本必须返回正确的内容类型,无论是HTML还是图像数据。

浏览器将解释HTML,查看图像的链接,并提出其他请求以获取图像。

0

您的问题更可能是您的图片是驱动器上的绝对路径,而不是您websever上图片的相对路径。

我注意到,您的IMG SRC是“/home/kfarmer/public_html/kevin/charFreq.png”

所以,如果你的网站服务器根目录是“/家庭/ kfarmer /的public_html /凯文”,这是什么当你去someurl.com将加载,那么你的IMG SRC应该只是“/charFreq.png”

如果你的服务器的根目录为“/家庭/ kfarmer /的public_html”那么你的IMG SRC应该是“凯文/charFreq.png'

这比这更复杂,因为网址是相对于从何处加载页面的。

因此,如果该网页是www.someurl.com/kevin/anotherfolder/mypage.html,并且您想要在'kevin/someotherplace/charFreq.png'中加载图片,那么您需要将您的img src设为' /kevin/someotherplace/charFreq.png'OR'../someotherplace/charFreq.png'