I''ve seen posts of a few people who have this problem, but not a single response about solving it. I can''t upload .png files, but .jpg and .gif work fine. When I upload just a .png, my action gets a StringIO object which breaks when I try to copy the upload to an absolute location. However, using multiple-field upload, as long as one of the to-upload files is *not* a .png, all of the png files will properly upload (TempFile objects now). So: Upload: test_image.png --> Failure (FileUtils evaluating nil.to_str in #cp) Upload: test_image1.png, test_image2.png --> Also fails Upload: test_image1.png, test_image2.png, test_image3.jpg --> Works perfectly, I see all three images. So, what''s going on with Rails and png? Is there a mime type I''m missing somewhere? It just doesn''t make any sense. Thanks Jason --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Jason Roelofs wrote:> I''ve seen posts of a few people who have this problem, but not a single > response about solving it. > > I can''t upload .png files, but .jpg and .gif work fine. When I upload > just a > .png, my action gets a StringIO object which breaks when I try to copy > the > upload to an absolute location.Sorry, I can''t picture what you''re doing. What is your "view" and your "controller" code ? Stephan -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Found out where the problem is, and it''s just coincidence that PNG
images
were showing this problem.
I''ve found the problem in but one place:
http://blog.vixiom.com/2006/07/26/rails-stringio-file-upload/
In short: file uploads that are less than a certain threshold (15K?) become
StringIO objects, and anything larger is a Tempfile. I thought all would be
Tempfiles.
Then I checked out file_column (
http://opensvn.csie.org/rails_file_column/plugins/file_column/) and found
this bit of code:
# stored uploaded file into local_file_path
# If it was a Tempfile object, the temporary file will be
# cleaned up automatically, so we do not have to care for this
if file.respond_to?(:local_path) and file.local_path and
File.exists?(file.local_path)
FileUtils.copy_file(file.local_path, local_file_path)
elsif file.respond_to?(:read)
File.open(local_file_path, "wb") { |f| f.write(file.read) }
else
raise ArgumentError.new("Do not know how to handle
#{file.inspect}")
end
So somewhere in Rails (this problem is with both WEBrick and Mongrel, so
I''m
assuming it''s not them) there''s logic to turn upload file data
into a
tempfile after a certain size, but I cannot find out where. Would it be
possible / feasible to make all file uploads Tempfiles or is this not
possible to know on the server?
Jason
On 4/27/07, Stephan Wehner
<rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org>
wrote:>
>
> Jason Roelofs wrote:
> > I''ve seen posts of a few people who have this problem, but
not a single
> > response about solving it.
> >
> > I can''t upload .png files, but .jpg and .gif work fine. When
I upload
> > just a
> > .png, my action gets a StringIO object which breaks when I try to copy
> > the
> > upload to an absolute location.
>
> Sorry, I can''t picture what you''re doing. What is your
"view" and your
> "controller" code ?
>
> Stephan
>
> --
> Posted via http://www.ruby-forum.com/.
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
> > So somewhere in Rails (this problem is with both WEBrick and Mongrel, so > I''m > assuming it''s not them) there''s logic to turn upload file data into a > tempfile after a certain size, but I cannot find out where. Would it beLook in the ruby file cgi.rb, method "read_multipart". This is part of Ruby, not Rails. On my Linux machine it is found in /usr/lib/ruby/1.8/cgi.rb Stephan -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---