Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

•Re: Image Server - Multi-functional

by merlyn (Sage)
on Feb 12, 2003 at 12:33 UTC ( [id://234661]=note: print w/replies, xml ) Need Help??


in reply to Image Server - Multi-functional

# Output an image to the browser sub show_img { my $img = shift; my ($mime) = $img =~ /\.(gif|jpe?g|png)$/; $mime = 'jpeg' if $mime eq 'jpg'; open my $fh, '<', $img or die "Could not open $img for read: $!"; binmode $fh; my $img_data = do { local $/; <$fh> }; close $fh; print header('image/' . $mime), $img_data; exit; }
Rather than pump the image yourself, I'd put the images somewhere in your www-server space (an unlinked unannounced directory), and then use an internal redirect:
print redirect("/some/webpath/to/selected/image.jpg");
The advantages are many:
  • The server is better than you at pumping data.
  • The values of last-modified and if-modified-since will be respected, allowing the server to avoid sending the data if the browser already has the image cached.
  • You won't ever be able to accidentally access something outside the normal htdoc tree, even from bad programming or malicious hacking.
  • Your CGI process goes away quicker.
  • The code will be eight lines shorter. {grin}

-- Randal L. Schwartz, Perl hacker
Be sure to read my standard disclaimer if this is a reply.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others musing on the Monastery: (3)
As of 2024-04-24 18:11 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found