在Ruby中,文件上傳和處理通常涉及使用一些特定的庫或框架來處理文件的上傳和存儲。一種常見的方法是使用CarrierWave或Paperclip這樣的Gem來處理文件上傳和存儲。
以下是一個簡單的示例,展示如何使用CarrierWave進行文件上傳和處理:
gem 'carrierwave'
gem 'mini_magick'
class AvatarUploader < CarrierWave::Uploader::Base
storage :file
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
end
class User < ApplicationRecord
mount_uploader :avatar, AvatarUploader
end
<%= form_for @user, html: { multipart: true } do |f| %>
<%= f.file_field :avatar %>
<%= f.submit %>
<% end %>
def create
@user = User.new(user_params)
if @user.save
redirect_to @user
else
render 'new'
end
end
private
def user_params
params.require(:user).permit(:avatar)
end
通過以上步驟,你就可以實現文件上傳和處理功能。當用戶上傳文件時,文件將被存儲在指定的位置,并且相關的文件信息也將被保存在數據庫中。您可以根據需要對上傳的文件進行各種處理,如縮放、裁剪等操作。