File size of web-based flv. Reading some bytes from a web-based file

This is such a noobie question.

I have a file, http:// … /One-minute-commercial-027.flv (I can’t
enter the name because the email gets rejected with a 5.7.1 as spam,
apparently.

I want to do two simple things:

  1. I want to get the file size. Please note that File.size() does not
    seem to work for me for a web-based file but does work for a local file.

C:\Users\Ralph>irb
irb(main):001:0>
File.size(‘c:/RailsInstaller/Sites/ultradedup002/app/views/usage/VideoTutorials.html.haml’)
=> 32406
irb(main):002:0> File.size(‘http:// … /One-minute-commercial-027.flv’)
Errno::EINVAL: Invalid argument - http:// something
/One-minute-commercial-027.flv
from (irb):2:in size' from (irb):2 from C:/RailsInstaller/Ruby1.9.2/bin/irb:12:in
irb(main):003:0>

  1. I want to read a few hundred bytes from the beginning of the file so
    as to pick up the flv’s time duration.

Are there Ruby facilities to do this?

Ralph S.

You should probably make a HEAD request and parse Content-Length header

curl --head ‘’ | grep ‘Content-Length’

http:// … /One-minute-commercial-027.flv’

Tuesday, January 3, 2012, 6:39:07 AM, you wrote:

VG> You should probably make a HEAD request and parse Content-Length
header

VG> curl --head ‘’ | grep ‘Content-Length’

VG> http:// … /One-minute-commercial-027.flv’

Could you beef up the example/explanation a bit, please.

Also, what about reading a few hundred bytes from the flv?

On Tue, Jan 3, 2012 at 6:03 AM, Ralph S. [email protected] wrote:

Also, what about reading a few hundred bytes from the flv?

using net/http – something like

ruby-1.9.2-p290 :035 > uri = URI(‘http://localhost/’)
=> #<URI::HTTP:0x00000101861f80 URL:http://localhost/>
ruby-1.9.2-p290 :036 > req = Net::HTTP::Get.new(uri.request_uri)
=> #<Net::HTTP::Get GET>
ruby-1.9.2-p290 :037 > req[‘Range’] = ‘bytes=0-99’
=> “bytes=0-99”
ruby-1.9.2-p290 :038 > Net::HTTP.start(uri.host, uri.port) {|http|
http.request(req) }.body
=> "

The above does assume that your web server supports the Range
header, so YMMV.