Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Howto Include Image with HTML::Template

by monkfan (Curate)
on Apr 03, 2007 at 05:46 UTC ( #607975=perlquestion: print w/ replies, xml ) Need Help??
monkfan has asked for the wisdom of the Perl Monks concerning the following question:

Hi,
I have the following Perl script that uses HTML::Template to generate a static webpages. And I want it to include the image "test.png" in the page.
use strict; use Data::Dumper; use Carp; use HTML::Template; # open the html template my $template = HTML::Template->new( filename => 'test.tmpl' ); # fill in some parameters $template->param( HOME => $ENV{HOME} ); $template->param( PATH => $ENV{PATH} ); $template->param( FIG => "/home/monkfan/public_html/SPACE-Web2/test.p +ng" ); # send the obligatory Content-Type and print the template output print $template->output;
And the template is:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w +3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <html><body bgcolor = white font = courier><head><title>Your SPACE Web + Results</title></head> <body> My Home Directory is <TMPL_VAR NAME=HOME> <p> My Path is set to <TMPL_VAR NAME=PATH> <p> <img src="<TMPL_VAR NAME=FIG>"> </body> </html>
Although the source of the HTML it generated is this:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w +3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <html><body bgcolor = white font = courier><head><title>Your SPACE Web + Results</title></head> <body> My Home Directory is /home/monkfan <p> My Path is set to /usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/ +X11R6/bin:/home/monkfan/bin <p> <img src="/home/monkfan/public_html/SPACE-Web2/test.png"> </body> </html>
I still can't see the figure ("test.png") from the browser, even though the path is already correct. Can anybody suggest what's wrong with my setting?

Update: It's solved. Thanks so much for all the suggestions. Foolish me.
Regards,
Edward

Comment on Howto Include Image with HTML::Template
Select or Download Code
Replies are listed 'Best First'.
Re: Howto Include Image with HTML::Template
by rsiedl (Friar) on Apr 03, 2007 at 05:52 UTC
    your path needs to be set relative to the root directory of your webserver.

    i.e. if your webpage is served out public_html you should just use: /SPACE-Web2/test.png
      Hi,
      I forgot to mentioned that my Perl script with HTML::Template is stored under:
      /home/monkfan/public_html/SPACE-Web2/cgi-bin
      And the figure is stored under:
      /home/monkfan/public_html/SPACE-Web2
      Even though I've modified that script to have this:
      $template->param( FIG => "../test.png" );
      It still doesn't show the figure.

      Regards,
      Edward
        have you tried making it relative to your root web directory?
        also, perhaps check the file permissions on the directory and image.
        $template->param( FIG => "/SPACE-Web2/test.png" );

        if it doesn't work , then use full URL such like

        http://www.domain.com/test.png

Re: Howto Include Image with HTML::Template
by idle (Pilgrim) on Apr 03, 2007 at 05:59 UTC
    Your home dir is not web-server home dir(ServerRoot) and web-server can not see anything outside. Consider use relative paths rather then absolute, i.e. if your DocumentRoot=/home/monkfan/public_html, its should look like src="/SPACE-Web2/test.png".
    Updated. And check web-server logs, its will show you where its looked for image.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://607975]
Approved by Anno
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (11)
As of 2015-07-29 16:13 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (265 votes), past polls