2011-08-09 109 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'