【问题标题】:File Upload By form_tag form on Ruby on Rails在 Ruby on Rails 上通过 form_tag 表单上传文件
【发布时间】:2012-12-03 16:12:44
【问题描述】:

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

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

CoursesController 中的 NoMethodError#attachment
“2012-03-02 21.53.55.jpg”的未定义方法“original_filename”:字符串

----- BEGIN P.S.(20121216 19:32) -----
要么 错误消息(当我在 show.html.erb 上添加“:multipart => true”时)

CoursesController#attachment 中的编码::UndefinedConversionError
"\xFF" 从 ASCII-8BIT 到 UTF-8

----- 结束-----

似乎程序将文件视为字符串?
视图文件可能有问题。

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


app/view/show.html.erb

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


app/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

【问题讨论】:

    标签: ruby-on-rails forms tags ruby-on-rails-3.2


    【解决方案1】:

    似乎表单没有发送带有请求的文件。您需要在 form_tag 中设置 :multipart => true。

    【讨论】:

    • 首先,感谢您对我的帮助!我很感激。我添加了 ":multipart=>true",它现在看起来像这样: 'attachment', :multipart => true) do %> 现在,我得到另一个错误。 >Encoding::UndefinedConversionError in CoursesController#attachment >"\xFF" from ASCII-8BIT to UTF-8 你知道解决办法吗?
    • 问题已解决。谢谢你。 stackoverflow.com/questions/13909812/…
    【解决方案2】:

    问题似乎类似于RoR upload Undefined encoding conversion

    form_tag中设置:multipart =&gt; true后,你需要以二进制模式打开文件('wb'而不是'w'):

    app/controller/courses_controller.rb

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

    【讨论】:

      猜你喜欢
      • 2011-11-15
      • 1970-01-01
      • 1970-01-01
      • 2010-09-12
      • 2010-11-25
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      • 2012-07-05
      相关资源
      最近更新 更多