SPUG: File headers

Darren/Torin/Who Ever... torin at daft.com
Wed Feb 9 08:04:04 CST 2000


Steve Laybourn, in an immanent manifestation of deity, wrote:
>   I'm wondering if there is a way to be able to open a remote file long 
>enough to get the first 256 bytes and close the record again.
>Example:
>   If I wanted to scan the first 1024 bytes of
>
>http://www.arglebargle.com/images/very_big_graphic.jpg
>
>to make sure it WAS a JPEG file without having to load the entire image, 
>could it be done? If so, how? open / read don't seem to do it.

Yes, you can use the Ranges header in HTTP to request only a certain
amount.  The http server that you talk to must support HTTP/1.1 and
support byte-ranges but most of them do, so that's okay.  Note that to
comply with HTTP/1.1

BTW, you want to use example.com as an example instead of other
hostnames.  www.arglebargle.com exists but there is no images
directory.  :)  example.com is specifically reserved for use in examples
and will never be allocated to anyone.

So, you could do the following:
(use !perl -x on this message to run it.)
#!/usr/bin/perl -w

use strict;
use LWP::UserAgent;
use HTTP::Request::Common;
use Image::Size;

my $ua  = LWP::UserAgent->new;
my $res = $ua->request(GET 'http://www.pm.org/Images/tshirt.jpg',
		       Range      => 'bytes=0-1023',
		       Connection => 'Close',
		      );
die "Unable to retrieve image: " . $res->status_line unless $res->is_success;

# the third element of imgsize's return is the file type. i.e. JPG
print +(imgsize($res->content_ref))[2], "\n";

__END__
-- 
<torin at daft.com> <http://www.daft.com/~torin> <torin at debian.org> <torin at io.com>
Darren Stalder/2608 Second Ave, @282/Seattle, WA 98121-1212/USA/+1-800-921-4996
@ Sysadmin, webweaver, postmaster for hire. C/Perl/CGI/Pilot programmer/tutor @
@		     Make a little hot-tub in your soul.		      @

 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    POST TO: spug-list at pm.org        PROBLEMS: owner-spug-list at pm.org
 Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/
 SUBSCRIBE/UNSUBSCRIBE: Replace ACTION below by subscribe or unsubscribe
        Email to majordomo at pm.org: ACTION spug-list your_address





More information about the spug-list mailing list