登录 主页

rails 上传文件的使用

2023-08-23 09:46PM

参考:https://stackoverflow.com/questions/14174044/uploading-a-file-in-rails

可以选择form_tagmultipart: true结合使用, 或者使用 form_for

<%= form_tag({action: :upload}, multipart: true) do %>
  <%= file_field_tag 'picture' %>
<% end %>

<%= form_for @person do |f| %>
  <%= f.file_field :picture %>
<% end %>

可以在控制器中访问上传的文件,如下所示:

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

 eg:我这里使用的是form_tagmultipart: true的结合,增加管理员个人档案页面

在app/views/users/edit_profile.html.erb增加下面的内容:

 <%= form_tag '/users/save_profile', multipart: true do %>                                    
       <%= file_field_tag "avatar_image" %>                                                           
       <%= submit_tag "提交" %>
 <% end %>

然后在app/controllers/users_controller.rb 里面增加下面的内容:

def edit_profile
end

def save_profile                  
     uploaded_io = params[:avatar_image]                                        
     File.open(Rails.root.join('public', 'images', uploaded_io.original_filename), 'wb') do |file|
       file.write(uploaded_io.read)                      
     end
  
     user = User.find session[:current_user]['id']                                       
     user.avatar_path = '/images/' +  uploaded_io.original_filename                      
     user.save!

     redirect_to '/users/show_profile'    
   end

返回>>

登录

请登录后再发表评论。

评论列表:

目前还没有人发表评论