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:
<h1>Most Wanted</h1>
<% for mugshot in @mugshots -%>
<%= link_to image_tag(mugshot.public_filename(:thumb)),
mugshot.public_filename %>
<% end -%>
<p>
<%= link_to(''New shot'', { :action =>
''new'' }) %>
</p>
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