I have a single HTML form which contains simple text controls as well as file
upload controls. I had assumed that the CGI library would return me items of
type String for the text boxes and items of type Tempfile for the file upload
However, it appears (after searching the archives) that StringIO is used
instead of Tempfile on ruby 1.8 (in some cases and not others?), and that as
soon as you specify an enctype of multipart you never? receive Strings but
always receive either Tempfile or StringIO.
This is what i really want from the CGI library:
- CGI returns everything as a string except for file uploads - which are
returned as Tempfiles
Assuming that I cannot have that can somebody in the know please tell me
(or point me to some documentation)…
how can I tell whether or not the supplied parameter was a file upload or
simple text that has been passed to me as a Tempfile/StringIO? At the moment
I don’t know whether to copy the file or not - because I don’t know if it is
a valid file or just another parameter.
do hidden controls work with multi-part forms? there is some discussion of
them not working on the mailing list dating back to last November but I don’t
know if that has been fixed or not. My limited testing here indicates that
hidden parameters are ignored on multipart forms?
why are all values expressed as Tempfile/StringIO when using a multipart
form? Why not just have the file uploads as tempfiles?
how does the CGI library determine whether or not to switch between
do I have to specifically close the IO object (assuming that one is
returned?) - or perhaps I do not have to close the StringIO but I do have to
close the Tempfile?
are all of the form parameters in different tempfiles or are they all in
one? Say i close the file after reading 1 argument … does this mean that I
cannot read any more?
Thanks for any help you can give me - I am pretty stuck on this. If I get
code working with StringIO objects it seems to break when I submit large
files, and if I get code working with Tempfile it seems to break when I
submit small files
53 Union Street