2012-12-17 11 views
20

Mi piacerebbe fare un semplice uploader di file usando tag_form su Rails 3.2.8.
Ma quando cerco di inviare un file di immagine, ottengo un errore che dice

Messaggio di errore (quando si tenta di inviare un file di immagine)Errore, Ruby on Rails: Encoding :: UndefinedConversionError in CoursesController # attachment " xFF" da ASCII-8BIT a UTF-8

Encoding :: UndefinedConversionError in CoursesController # allegato
"\ xFF" da ASCII-8BIT a UTF-8

sarei grato se mi aiuto con questo problema.
Ecco i miei codici.


app/view/show.html.erb

<%= form_tag(attachment_course_path, :action=>'attachment', :multipart => true) do %> 
<div class="field"> 
    <%= label_tag :file %> 
    <%= file_field_tag :file %> 
</div> 
<div class="actions"> 
    <%= submit_tag 'Submit' %> 
</div> 
<% end %> 


app/regolatore/courses_controller.rb

def attachment 
    t = Time.now.strftime("%Y%m%d%H%M%S") 
    uploaded_io = params[:file] 
    File.open(Rails.root.join('public', 'upload', uploaded_io.original_filename), 'w') do |file| 
    file.write(uploaded_io.read) 
    end 
end 


config/routes.rb

resources :courses, :only => [ :show ] do 
    member do 
    post :attachment 
    end 
end 

risposta

58

Tentare di aprire il file in modalità binaria ('wb' invece di 'w'):

... 
    File.open(Rails.root.join('public', 'upload', uploaded_io.original_filename), 'wb') do |file| 
    file.write(uploaded_io.read) 
    end 

Ruby Docs IO Open Mode

+1

Ha funzionato! Grazie mille! – wiz

Problemi correlati