rails上傳文件的原始方法

1.Views

1)使用form_tag生成表單
<%= form_tag({action: :upload}, multipart: true) do %>
      <%= file_field_tag 'picture' %>
<% end %>
2)使用form_for
<%= form_for @person do |f| %>
      <%= f.file_field :picture %>
<% end %>

2.在model上寫業(yè)務(wù)邏輯處理

class MyFile < ActiveRecord::Base

    def file=(file_field)    # 這是有特殊含義的
        #注意使用wb+方法
        File.open("#{RAILS_ROOT}/myfile", "wb+") do |f|
            f.write(file_field.read)
        end
    end
end

3.controller處理

class UploadController < ApplicationController

    def upload
        unless request.get?
            file = MyFile.new(params[:file])    # 自動調(diào)用 File 里面的file=method
            if file.save
               redirect_to path, notice: {}
            else
               # 失敗的操作
            end
        end
    end
end

4.Controller(選用)

def upload
    uploaded_io = params[:person][:picture]  #通過params獲取文件
    File.open(Rails.root.join('public', 'uploads', uploaded_io.original_filename), 'wb') do |file|
      file.write(uploaded_io.read)
    end 
end
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容