File Upload problem when file is small, under 19k(read metho

Hi

I hope someone can shed some light on this have searched a lot but found
nothing definite. This happens on Ubuntu and Fedora 2.

I am having a problem with uploading small files (images gif or jpeg
under 19k).

According to ruby documentation these are stored temporarily as StringIO
objects rather than temporary files (as is done with the larger file
uploads).

The problem is that when it is a StringIO rather than a temporary file
(ie a file smaller than 19k) nothing is returned from the read method.

example code where “image” is the file upload form parameter, it works
fine if image is over round 19k but is it is smaller then image.read
returns nothing however the image.size and image.original_filename
return the correct information.

File.open(path_to_save_file, “wb”) {|f| f.write(image.read) }

All the best
Ant


Ant Peacocke

www.levelsystems.net
T: + 33 (0) 8 70 46 63 37
M: + 33 (0) 6 09 81 06 00

Ant Peacocke wrote:

example code where “image” is the file upload form parameter, it works
fine if image is over round 19k but is it is smaller then image.read
returns nothing however the image.size and image.original_filename
return the correct information.

File.open(path_to_save_file, “wb”) {|f| f.write(image.read) }

I haven’t seen this myself, so I’m puzzled.

Have you tried doing image.rewind before trying to read the image
IOString?

–Al Evans

Many thanks Al

that fixed the problem, by putting image.rewind before image.read it now
reads the file contents regardless of whether they are small or large.
eg.

image.rewind

File.open(path_to_save_file, “wb”) {|f| f.write(image.read) }

Thanks again Ant

Al Evans wrote:

I haven’t seen this myself, so I’m puzzled.

Have you tried doing image.rewind before trying to read the image
IOString?

–Al Evans


Ant Peacocke

www.levelsystems.net
T: + 33 (0) 8 70 46 63 37
M: + 33 (0) 6 09 81 06 00