I sent my original post to this group under the title “Is mime content
type case sensitive”. It’s made it to page 3 and I think I’ve found a
bug so I’m re-posting.
I have a very simple example that uses one of the attachment plugins
to upload jpeg image files, creating thumbs on the way to storing all
on the filesystem.
From the attachment_fu test:
mugshots_controller.rb has:
def index
@mugshots = Mugshot.find(:all,
:conditions => {:thumbnail => nil})
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @mugshots }
end
end
views/mugshots/index.html.erb:
Most Wanted
<% for mugshot in @mugshots -%> <%= link_to image_tag(mugshot.public_filename(:thumb)), mugshot.public_filename %> <% end -%><%= link_to('New shot', { :action => 'new' }) %>
mugshot.rb:
class Mugshot < ActiveRecord::Base
has_attachment :content_type => :image,
:storage => :file_system,
:size => 0…3.megabytes,
:resize_to => ‘640x480>’,
:thumbnails => { :thumb => ‘100x100>’ }
validates_as_attachment
end
…_create_mugshots.rb:
class CreateMugshots < ActiveRecord::Migration
def self.up
create_table :mugshots do |t|
t.column :parent_id, :integer
t.column :content_type, :string
t.column :filename, :string
t.column :thumbnail, :string
t.column :size, :integer
t.column :width, :integer
t.column :height, :integer
t.timestamps
end
end
def self.down
drop_table :mugshots
end
end
I added two images, “DSCN0925.jpg” and “DSCN0913.JPG” through the
application. The unix file command for these images tells me:
DSCN0913.JPG: JPEG image data, EXIF standard 2.2
DSCN0925.jpg: JPEG image data, EXIF standard 2.2
And, using script/console, Mugshot.find(:all) gives:
Mugshot.find(:all)
=> [#<Mugshot id: 1, parent_id: nil, content_type: “image/jpeg”,
filename: “DSCN0925.jpg”, thumbnail: nil, size: 818302, width: 640,
height: 479, created_at: “2009-04-29 19:01:17”, updated_at:
“2009-04-29 19:01:17”>, #<Mugshot id: 2, parent_id: 1, content_type:
“image/jpeg”, filename: “DSCN0925_thumb.jpg”, thumbnail: “thumb”,
size: 75300, width: 100, height: 75, created_at: “2009-04-29
19:01:18”, updated_at: “2009-04-29 19:01:18”>, #<Mugshot id: 3,
parent_id: nil, content_type: “image/jpeg”, filename: “DSCN0913.JPG”,
thumbnail: nil, size: 833312, width: 640, height: 479, created_at:
“2009-04-29 19:01:48”, updated_at: “2009-04-29 19:01:48”>, #<Mugshot
id: 4, parent_id: 3, content_type: “image/jpeg”, filename:
“DSCN0913_thumb.JPG”, thumbnail: “thumb”, size: 162513, width: 100,
height: 75, created_at: “2009-04-29 19:01:49”, updated_at: “2009-04-29
19:01:49”>]
NOTE: content_type for all four records is image/jpeg.
Observing the headers associated with a load of the view/mugshots/
index.html.erb view with Live HTTP gives:
http://localhost:3000/mugshots/0000/0001/DSCN0925_thumb.jpg?1241031678
GET /mugshots/0000/0001/DSCN0925_thumb.jpg?1241031678 HTTP/1.1
Host: localhost:3000
User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:
1.9.0.10) Gecko/2009042315 Firefox/3.0.10
Accept: image/png,image/;q=0.8,/;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://localhost:3000/mugshots
Cookie: _mugshots_session=BAh7CDo…
If-Modified-Since: Wed, 29 Apr 2009 19:01:18 GMT
Cache-Control: max-age=0
HTTP/1.x 200 OK
Last-Modified: Wed, 29 Apr 2009 19:01:18 GMT
Content-Type: image/jpeg
Content-Length: 2780
Connection: keep-alive
Server: thin 1.0.0 codename That’s What She Said
http://localhost:3000/mugshots/0000/0003/DSCN0913_thumb.JPG?1241031709
GET /mugshots/0000/0003/DSCN0913_thumb.JPG?1241031709 HTTP/1.1
Host: localhost:3000
User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:
1.9.0.10) Gecko/2009042315 Firefox/3.0.10
Accept: image/png,image/;q=0.8,/;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://localhost:3000/mugshots
Cookie: _mugshots_session=BAh7CDo…
If-Modified-Since: Wed, 29 Apr 2009 19:01:49 GMT
Cache-Control: max-age=0
HTTP/1.x 200 OK
Last-Modified: Wed, 29 Apr 2009 19:01:49 GMT
Content-Type: text/plain
Content-Length: 4812
Connection: keep-alive
Server: thin 1.0.0 codename That’s What She Said
NOTE: the content_type associated with .jpg is image/jpeg
NOTE: the content_type associated with .JPG is text/plain
This difference causes Firefox to identify all .JPG files as “JPEG
Picture” rather than “image/jpeg…”, resulting in different behavior
in the browser when the “link_to” link is followed.
Where should I take this problem?
Rick