Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Re: Display gif in CGI page

by Sinistral (Monsignor)
on Dec 08, 2011 at 15:22 UTC ( [id://942463]=note: print w/replies, xml ) Need Help??


in reply to Display gif in CGI page

You're confusing two kinds of scripts, one that generates HTML and one that generates an image suitable for use as the src of an img tag.

Here is a simple CGI script that simply generates a page using an image tag:

#!/usr/bin/perl use strict; use warnings; use CGI qw(:all); my $q = CGI->new; print $q->header(); print $q->start_html(); print $q->img({src => 'image.gif'}); print $q->end_html();

And here is the code you want that actually emits the conttents of an image file to be used as the image src:

#!/usr/bin/perl use strict; use warnings; use CGI qw(:all); my $q = CGI->new; print $q->header(-type => 'image/gif'); open(my $F, '<', '1.gif') || die "can not open\n"; local $\ = undef; print <$F>; close($F);

Save the 2nd script as img.pl and you can modify the first script to use your second script:

#!/usr/bin/perl use strict; use warnings; use CGI qw(:all); my $q = CGI->new; print $q->header(); print $q->start_html(); print $q->img({src => 'img.pl'}); print $q->end_html();

Notes:

  • You don't need two inclusions of CGI, just one with the flag :all to get all the routines
  • The image MIME type does not include a character set. It's binary data, there's no concept of character set
  • The die in img.pl will never be seen unless you look at web server error logs - the browser expects binary GIF image data and won't show your error message indicating that 1.gif can't be read
  • You don't need a script to use img.pl; a static HTML page with an img tag where the src attribute is img.pl is all you need. I just showed you that to show the two types of scripts you are confusing
  • You may not be able to use img.pl as your file name; you might have to use img.cgi, depending on how your web server is configureed
  • Your Perl may not be in /usr/bin; configure as appropriate for your system
  • These scripts assume that img.pl and 1.gif are all in the same directory. This is not necessary; you can use subdirectories.
  • Be sure to read the instructions for CGI.
  • You may also want to check out Beginner's Guide to CGI Scripting with Perl

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://942463]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others pondering the Monastery: (3)
As of 2024-04-26 05:01 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found