ruby-on-rails - 错误,Ruby on Rails: Encoding::UndefinedConversionError in CoursesController#attachment "\xFF"从 ASCII-8BIT 到 UTF-8

标签 ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

我想在 Rails 3.2.8 上使用 tag_form 制作一个简单的文件上传器。
但是当我尝试提交图像文件时,我收到一条错误消息

错误消息(当我尝试提交图像文件时)

Encoding::UndefinedConversionError in CoursesController#attachment
"\xFF" from ASCII-8BIT to UTF-8



如果你能帮我解决这个问题,我将不胜感激。
这是我的代码。

应用程序/ 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 %>

应用程序/ Controller /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

最佳答案

尝试以二进制模式打开文件( 'wb' 而不是 '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

关于ruby-on-rails - 错误,Ruby on Rails: Encoding::UndefinedConversionError in CoursesController#attachment "\xFF"从 ASCII-8BIT 到 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13909812/

相关文章:

MySQL正则表达式: How to match digits in the string with\d?

ruby-on-rails-3 - Rails 自引用 has_many 通过连接表的自定义命名

ruby-on-rails - 如何将 Rails 应用程序从 2.3.5 升级到 3.2.x?

ruby-on-rails - Rails 单表继承 : How to override the value written to the type field

ruby-on-rails - Rails 两个模型之间的多个关联

ruby-on-rails - 使用 bundler 在生产服务器上更新到新版本的 Prawn 时出现问题

ruby-on-rails - 使用脚本/delay_job 创建 delayed_job worker 时出现未定义方法错误

android - Rails protect_from_forgery 与移动应用程序

ruby-on-rails - Rails 3 工具栏渲染

ruby-on-rails - 本地图在选项卡内时,gmaps4rails 会在 map 外显示标记