Newbie - Test For JPEG Image Over HTTP

N

Neil Charlton

Hi

I would like to test for the existence of a .jpg image on a remote
server over HTTP.

I have tried 2 different methods but they are not what I need.

Method 1:

require 'open-uri'
if open('http://example.net/path/to/image.jpg')
# do something
end

Method 2:

require 'net/http'
if Net::HTTP.get 'example.net', '/path/to/image.jpg'
# do something
end

The server where the images are always returns a default page if the
images do not exist so the code above always returns.

What I need is a way to check what is returned is not a html page but is
a .jpg image.

Any help greatly appeciated.
Thanks
Neil
 
A

Alex Young

Neil said:
Hi

I would like to test for the existence of a .jpg image on a remote
server over HTTP.

I have tried 2 different methods but they are not what I need.

Method 1:

require 'open-uri'
if open('http://example.net/path/to/image.jpg')
# do something
end

Method 2:

require 'net/http'
if Net::HTTP.get 'example.net', '/path/to/image.jpg'
# do something
end

The server where the images are always returns a default page if the
images do not exist so the code above always returns.

What I need is a way to check what is returned is not a html page but is
a .jpg image.

Oh. Try this:

require 'net/http'

def url_is_a_jpg(url)
u = URI.parse(url)
h = Net::HTTP.new(u.host, u.port)
r = h.head(u.path)
return r.content_type == 'image/jpeg'
end
 
N

Neil Charlton

Alex said:
Oh. Try this:

require 'net/http'

def url_is_a_jpg(url)
u = URI.parse(url)
h = Net::HTTP.new(u.host, u.port)
r = h.head(u.path)
return r.content_type == 'image/jpeg'
end

Hi Alex

Thanks for your help. I can see what you are doing there unfortunately I
get the following error

isjpg.rb:7:in `url_is_a_jpg': undefined method `content_type' for
#<Net::HTTPOK 200 readbody=true> (NoMethodError)

ruby -v is
ruby 1.8.2 (2004-12-25) [x86_64-linux]

Any ideas ?

Thanks
Neil
 
A

Alex Young

Neil said:
Alex said:
Oh. Try this:

require 'net/http'

def url_is_a_jpg(url)
u = URI.parse(url)
h = Net::HTTP.new(u.host, u.port)
r = h.head(u.path)
return r.content_type == 'image/jpeg'
end

Hi Alex

Thanks for your help. I can see what you are doing there unfortunately I
get the following error

isjpg.rb:7:in `url_is_a_jpg': undefined method `content_type' for
#<Net::HTTPOK 200 readbody=true> (NoMethodError)

ruby -v is
ruby 1.8.2 (2004-12-25) [x86_64-linux]

Any ideas ?
Is that for a path that does exist, doesn't exist, or both?
 
L

Logan Capaldo

Neil said:
Alex said:
Neil Charlton wrote:
if open('http://example.net/path/to/image.jpg')
The server where the images are always returns a default page if
the images do not exist so the code above always returns.

What I need is a way to check what is returned is not a html
page but is a .jpg image.

Oh. Try this:

require 'net/http'

def url_is_a_jpg(url)
u = URI.parse(url)
h = Net::HTTP.new(u.host, u.port)
r = h.head(u.path)
return r.content_type == 'image/jpeg'
end
Hi Alex
Thanks for your help. I can see what you are doing there
unfortunately I get the following error
isjpg.rb:7:in `url_is_a_jpg': undefined method `content_type' for
#<Net::HTTPOK 200 readbody=true> (NoMethodError)
ruby -v is
ruby 1.8.2 (2004-12-25) [x86_64-linux]
Any ideas ?
Is that for a path that does exist, doesn't exist, or both?

Try r.response.content_type == 'image/jpeg' perhaps?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,209
Messages
2,571,089
Members
47,689
Latest member
kilaocrhtbfnr

Latest Threads

Top