Forum: Ruby on Rails File Upload problem when file is small, under 19k(read metho

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Ant Peacocke (Guest)
on 2006-05-20 14:02
(Received via mailing list)
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
Al E. (Guest)
on 2006-05-20 16:18
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
Ant Peacocke (Guest)
on 2006-05-20 20:58
(Received via mailing list)
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
This topic is locked and can not be replied to.