Solved

get file size before downloading via http

Posted on 2009-07-15
5
299 Views
Last Modified: 2012-06-27
In the previous question I was shown how to specify the byte range in an http request (using HTTP::Request and LWP::UserAgent). This allows one to download a specific chunk of a while (e.g., bytes 10000 to 20000).

What I forgot to include in that question is: Can I get the size of the file before specifying the bytes range. Since I will always be retrieving the last x bytes in the file, I would like to get the total size so that I can calculate the range so that the request range is, in effect, total_size minus x to total_size.

thanks
0
Comment
Question by:drunnels
  • 3
  • 2
5 Comments
 
LVL 7

Expert Comment

by:Fairlight2cx
ID: 24862577
Check the Content-Length response header from code like the following:
use LWP;
my $agent = LWP::UserAgent->new(); 
my $request = HTTP::Request->new(HEAD => "http://members.iglou.com/fairlite/cod4_mapgrabber_setup.exe"); 
my $response = $agent->request($request); 
print($response->as_string);
 
+++++
Response portion pertinent:
 
Content-Length: 3470512

Open in new window

0
 

Author Comment

by:drunnels
ID: 24862613
I don't think this will work for my purposes. There is a very large file and I need to see the size of it before I request it. I believe that by the time you see the content length in the response, you've already gotten the file.
0
 
LVL 7

Expert Comment

by:Fairlight2cx
ID: 24862627
Negative.  Look carefully at the HTTP::Request->new() call.  We're specifying HEAD, not GET or POST.  That gets -only- the headers, nothing else.
0
 
LVL 7

Accepted Solution

by:
Fairlight2cx earned 500 total points
ID: 24862654
Here's the one-liner version, so forgive the spacing, but I'll illustrate the entire response:


 perl -e 'use LWP;my $agent = LWP::UserAgent->new(); my $r
equest = HTTP::Request->new(HEAD => "http://members.iglou.com/fairlite/cod4_mapg
rabber_setup.exe"); my $response = $agent->request($request); print($response->a
s_string);'
HTTP/1.1 200 OK
Connection: close
Date: Wed, 15 Jul 2009 18:41:20 GMT
Accept-Ranges: bytes
ETag: "f7a5db-34f4b0-4a2e3ff4"
Server: Apache/1.3.41 (Unix)
Content-Length: 3470512
Content-Type: application/octet-stream
Last-Modified: Tue, 09 Jun 2009 10:56:52 GMT
Client-Date: Wed, 15 Jul 2009 18:41:20 GMT
Client-Response-Num: 1
 
 
#####  That's -all- it obtains.  Just headers, since we specify HEAD.

Open in new window

0
 

Author Closing Comment

by:drunnels
ID: 31603886
Sorry - missed the HEAD obviously.

thanks
0

Featured Post

Windows Server 2016: All you need to know

Learn about Hyper-V features that increase functionality and usability of Microsoft Windows Server 2016. Also, throughout this eBook, you’ll find some basic PowerShell examples that will help you leverage the scripts in your environments!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Many time we need to work with multiple files all together. If its windows system then we can use some GUI based editor to accomplish our task. But what if you are on putty or have only CLI(Command Line Interface) as an option to  edit your files. I…
Password hashing is better than message digests or encryption, and you should be using it instead of message digests or encryption.  Find out why and how in this article, which supplements the original article on PHP Client Registration, Login, Logo…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…

856 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question