在Ruby on Rails中處理文件上傳非常簡單。你可以使用ActionDispatch::Http::UploadedFile對象來處理上傳的文件。以下是一個簡單的示例,展示了如何在Rails控制器中處理文件上傳:
<!-- app/views/uploads/new.html.erb -->
<%= form_with model: @upload, local: true do |form| %>
<%= form.file_field :file %>
<%= form.submit "Upload" %>
<% end %>
這里,我們創建了一個名為@upload
的模型實例,用于處理文件上傳。請確保你已經創建了一個名為Upload
的模型,并運行了相應的遷移命令。
app/models/upload.rb
文件中,定義一個名為file
的屬性,以便模型可以接收上傳的文件:class Upload < ApplicationRecord
has_one_attached :file
end
UploadsController
的控制器,用于處理文件上傳:# app/controllers/uploads_controller.rb
class UploadsController < ApplicationController
def new
@upload = Upload.new
end
def create
@upload = Upload.new(upload_params)
if @upload.save
# 文件上傳成功,你可以在這里處理成功邏輯,例如將文件保存到服務器或云存儲服務
redirect_to @upload, notice: 'File uploaded successfully.'
else
# 文件上傳失敗,你可以在這里處理失敗邏輯,例如顯示錯誤消息
render :new
end
end
private
def upload_params
params.require(:upload).permit(:file)
end
end
在這個控制器中,我們定義了兩個方法:new
和create
。new
方法用于渲染文件上傳表單,而create
方法用于處理文件上傳請求。我們還定義了一個名為upload_params
的私有方法,用于允許的參數。
現在,當用戶通過表單上傳文件時,Rails將自動處理文件并將其存儲在服務器上。你可以根據需要對文件進行處理,例如將其保存到云存儲服務(如Amazon S3)或將文件信息存儲在數據庫中。