Using image_tag and send_data

I am using image_tag to load an image that I’ve saved to the database
(using attachment_fu if you’re curious but that’s probably not
relevant here):

VIEW
<%= image_tag ‘/photo/get_image/5’ %>

CONTROLLER
def get_image
@photo=Photo.find(params[:id])
send_data(DbFile.find(@photo.db_file_id).data,
:type => @photo.content_type,
:file_name =>
@photo.filename,
:disposition => ‘inline’)
end

The images I’m saving are less than 100kb and easily handled by my
mysql column of db_file.data which is declared MEDIUMBLOB.

My problem is that the view works perfectly in production but not at
all in development – in development I just get a broken image graphic
with a box and a red x.

Any ideas on how to troubleshoot this? Since it doesn’t seem to be my
code (it works fine in production) I’m at a loss on how to figure this
out.

On Oct 8, 2:32 pm, Lastps [email protected] wrote:

I am using image_tag to load an image that I’ve saved to the database
(using attachment_fu if you’re curious but that’s probably not
relevant here):

I’d copy and paste that image link into the browser (ie yourserver,com/
photo/get_image/5) and see what the browser pulls out.

Fred

Thanks for the suggestion –
I get the same red box with the x.

On Oct 8, 8:47 am, Frederick C. [email protected]

On 8 Oct 2008, at 15:05, Lastps wrote:

Thanks for the suggestion –
I get the same red box with the x.

Do the logs indicate that an error occured ? If not and if you use the
tool of your choice to download the image, how do the bytes differ
from the bytes you would expect.

Fred

logs say that all is ok:
Sending data my_image.jpg
Completed in 0.09400 (10 reqs/sec) | Rendering: 0.00000 (0%) | DB:
0.08000 (85%) | 200 OK [http://localhost/photo/get_image/5]

Interesting question you ask about how do the bytes differ. I guess I
first need to find a “tool of my choice” other than my two browsers
(IE and Firefox) – any suggestions?

On Oct 8, 9:18 am, Frederick C. [email protected]

i guess that’s the point in that the browser is not displaying the
image – it is just displaying the error gif, ie, a box with a red x
in it indicating that i can’t load the image.

Fred, i really appreciate the time you’re dedicating here…

On Oct 8, 9:51 am, Frederick C. [email protected]

Just tried something else –
Changed disposition to “attachment” and used Firefox to successfully
download the file. When I tried to open the file (in GIMP) I received
these error messages:
– Premature end of JPEG file
– Invalid JPEG file structure: missing SOS marker
So, I guess attachment_fu is not saving the files properly to my
db_file table…

On 8 Oct 2008, at 15:47, Lastps wrote:

logs say that all is ok:
Sending data my_image.jpg
Completed in 0.09400 (10 reqs/sec) | Rendering: 0.00000 (0%) | DB:
0.08000 (85%) | 200 OK [http://localhost/photo/get_image/5]

Interesting question you ask about how do the bytes differ. I guess I
first need to find a “tool of my choice” other than my two browsers
(IE and Firefox) – any suggestions?

using the browser to save the image to disk would be one way.

Fred

Yes – seems like attachment_fu or mysql (?) might be truncating.
Weird though as the file size is not very large – just 10kb. In my
experience, truncation occurs because you are handling large files…

On Oct 8, 10:08 am, Frederick C. [email protected]

On 8 Oct 2008, at 16:00, Lastps wrote:

Just tried something else –
Changed disposition to “attachment” and used Firefox to successfully
download the file. When I tried to open the file (in GIMP) I received
these error messages:
– Premature end of JPEG file
– Invalid JPEG file structure: missing SOS marker
So, I guess attachment_fu is not saving the files properly to my
db_file table…

that sounds like its getting truncated.

Fred

On 8 Oct 2008, at 16:15, Lastps wrote:

Yes – seems like attachment_fu or mysql (?) might be truncating.
Weird though as the file size is not very large – just 10kb. In my
experience, truncation occurs because you are handling large files…

I suppose you need to pinpoint where it happens: before the image hit
your app, before attachment fu tried to save it, when mysql was given
the image, after retrieval from the database etc…

Fred

Yep – guess I’ll step through and research the various ways to check
the size of the data at each place. Thanks for your help!

On Oct 8, 10:20 am, Frederick C. [email protected]