www.webdeveloper.com
Results 1 to 5 of 5

Thread: Images with Perl CGi

  1. #1
    Join Date
    Aug 2012
    Posts
    2

    Images with Perl CGi

    Hi, please i'm new to perl cgi programming, i'll appreciate text recommendations.
    2. I'm trying to write a perl-cgi web page that displays some images. I'm still starting with one, but the book i'm using doesn't really tak about this, but i came up with this code after some findings.
    here is the code


    #!/usr/bin/perl
    use CGI qw(:standard);
    use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
    use strict;

    print "Content-type: image/jpg\n\n";
    print start_html("Images"),
    "Hello i'm working",
    "<center><img SRC= \"http://127.0.0.1/cgi-bin/images/test.jpg\" ></img></center>",
    end_html;

    exit ;


    the output i get on my browser is http://127.0.0.1/cgi-bin/image.cgi
    which is the url to the script direcory

    Please i'll appreciate some help and directions. Thannks

  2. #2
    Join Date
    Oct 2007
    Location
    Vienna, Austria
    Posts
    391
    OK. I think you just need to separate separate things.

    1) Displaying images is a matter of HTML. There's no reason to involve Perl or any kind of scripting. So just go ahead and experiment with displaying images in HTML. When you have a working static webpage with images in it, you can write a simple Perl script that will just print the same HTML and the result should remain the same. Then you can start playing around with displaying different images based on whatever.

    2) 127.0.0.1 is the localhost address. For your computer, it is your computer. For my computer, it is my computer, not yours. So I cannot see your webpage on the address http://127.0.0.1/cgi-bin/image.cgi even if you can.

    3) You have placed your image to the cgi-bin directory. That's a bad idea. cgi-bin is for scripts. Place your image some place else and it may start working.

    I would recommend getting yourself acquainted with the basics of how web works before you dive into CGI programming. Otherwise you risk a lot of unnecessary confusion, frustration and losing a lot of time.

  3. #3
    Join Date
    Mar 2011
    Posts
    1,139
    You're using the wrong MIME-type header for an HTML document. You aren't sending an image to the user, you're sending an HTML document. Try:
    Code:
    #!/usr/bin/perl
    use CGI qw(:standard);
    use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
    use strict;
    
    print header('text/html');  # Sends Content-type: text/html;
    print start_html("Images"),
    "Hello i'm working",
    "<center><img src= \"http://127.0.0.1/cgi-bin/images/test.jpg\" ></img></center>",
    end_html;
    exit ;
    Your code relies on a lot of functions built into the CGI.pm module for creating the essential components of an HTML document. While it does make it easy and you can control all of the elements, the code can get a bit complex when you want to create a working page with a lot of tags in the <head> section. So, you might consider creating those elements yourself in your scripts in the future.

    Sixtease was also correct that the http://127.0.0.1/ will only work on your local computer (assuming you have installed Apache and Perl on your own system). So remember to change the <img> tag if you put this script online.
    Rick Trethewey
    Rainbo Design

  4. #4
    Join Date
    Aug 2012
    Posts
    2
    Thanks for the replies,
    I've tried creating an html page that calls the cgi file but its still not working.
    this time the cgi is meant to display 2 images randomly.
    I've been able to create an html page that displays images normally but just left with being able to call a cgi script from the html code.
    The url is that cos i'm just practicing on my own, so i'm using my system as the server.

    Here is the code
    <html>
    <head>
    <title>Trying</title>
    </head>
    <body>
    This is just a trial
    <!--#exec cgi="/cgi-bin/img.cgi"-->
    </body>

    </html>

    instead of the exec cgi i also tried <A HREF ="http://127.0.0.1//cgi-bin/img.cgi"></A>.

    Thanks

  5. #5
    Join Date
    Mar 2011
    Posts
    1,139
    If you're going to try server directives like <!--#exec -->, be sure to use the .shtml extension in your filename so that Apache will parse it properly.

    If you use <!--#exec -->, the output of your script will be embedded in the original page. When you use an <a>nchor tag and link to the script, it will be like any other link and show the output of the script as a new page. It's up to you as to which one is appropriate, but the link would work best with the kind of script you posted because it's designed to output a complete HTML document.
    Rick Trethewey
    Rainbo Design

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles