【问题标题】:How to upload a file in rails?如何在rails中上传文件?
【发布时间】:2011-04-25 09:16:59
【问题描述】:

我是 Rails 新手。我想了解rails中的文件上传过程。谁能帮帮我吗... 谢谢, 阿尔萨夫

【问题讨论】:

  • 查看 Ruby on Rails 指南 (guides.rubyonrails.org/form_helpers.html#uploading-files) 或谷歌“rails 文件上传”或“rails 文件上传插件”以了解更多信息。最好先进行这项研究,然后再回到这里就您需要了解的部分提出更具体的问题。
  • 或者只是在 Stackoverflow 上搜索有关该主题的其他问题(“rails 文件上传”)。我相信您在输入问题时一定已经看到了这些问题。

标签: ruby-on-rails file file-upload filefield


【解决方案1】:

通常 gems/plugins 用于处理文件上传。我最喜欢的,也许是最普遍的是Paperclip

在您看来,您必须告诉 rails 表单助手您正在上传这样的文件:

<%= form_for @model, :html => { :multipart => true } do |form| %>

【讨论】:

  • =>感谢您的回复。我想知道要在控制器和模型中编写的上传代码(如果需要)。我熟悉文件上传的视图部分
  • @user475748 老兄,你不需要为上传文件编写任何特殊的代码行。回形针插件有这些代码行。只需按照我在答案中提供的博文并检查 5 分钟 railscast。
  • @user475748:按照 Paperclip gem 的说明进行操作。它处理文件上传的内部细节,让您只需指定配置值并让它完成其余的工作:)
  • 只是为了添加到这个旧答案,有一个更新的 gem 可以更好地处理文件上传:Carrierwave
  • 嗨,Jason,您不必使用 form_for 助手指定 { :multipart => true },如果您有 file_field,rails 会自动添加。仅当您使用 form_tag 时才需要。
【解决方案2】:

这是一个关于如何在不使用任何 gem 并且只使用 rails 的情况下上传文件的方法,

解决方案:=>

    def create
        @photo = Photo.new(photo_params)
        uploaded_io = params[:photo][:photo]
        File.open(Rails.root.join('public', 'uploads', uploaded_io.original_filename), 'wb') do |file|
           file.write(uploaded_io.read)
         end
        if @photo.save
          flash[:success] = "The photo was added!"
          redirect_to root_path
        else
          render 'new'
        end
      end


def upload
  uploaded_io = params[:person][:picture]
 File.open(Rails.root.join('public', 'uploads', uploaded_io.original_filename), 'wb') do |file|
    file.write(uploaded_io.read)
  end
end

而你的views中的form.html.erb应该包含这个,很简单,

 <%= form_for @photo do |f| %>
      <%= f.file_field :photo %>
      <div class="actions">
        <%= f.submit "Upload" %>
      </div>
    <% end %>

最后模型应该有,

  has_attached_file :image

.############################################# #### 您现在可以享受加载任何文件的乐趣了。

谢谢。玩得开心。

Use <video_tag> for viewing video files.
Use <audio_tag> for viewing audio files.
Use <object>"link"</object> for viewing PDF or DOC files.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-13
    • 2012-07-05
    • 1970-01-01
    • 2010-10-19
    • 2019-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多