2009年6月8日 星期一

Rails 上載文件

(1)建立一個rails project
rails uploaddemo -d sqlite3

(2)在uploaddemo/public, 建立一個文件夾data, 用來保存上載的文件

(3)創建一個controller名為upload, 包含兩個action, 分別為selectfile和savefile
selectfile用來選擇文件, savefile用來保存文件
script/generate controller upload selectfile savefile

(4)編寫selectfile.html.erb
<% form_for :datafile, :url=>{:action=>:uploadFile}, :html=>{:multipart=>true} do |form| %>
<%=form.file_field 'uploaded_data' %>
<%=submit_tag 'upload file' %>
<% end %>

(5)編寫controller的savefile
filename = params[:datafile][:uploaded_data].original_filename
File.open("#{RAILS_ROOT}/public/data/#{filename}", "wb") do |file|
file.write(params[:datafile][:uploaded_data].read)
end

完整UploadController為
class UploadController < filename =" params[:datafile][:uploaded_data].original_filename" text="">"File Upload Successed!"
end
end

(6)登入http://localhost:3000/upload/selectfile, 選擇文件和上載

(7)若上載成功, 頁面會轉到http://localhost:3000/upload/savefile
並在畫面見到 File Upload Successed!字眼

(8)檢查uploaddemo/public/data會見到你剛上載的文件

註: 若文件名為中文會有問題, 解決中...

沒有留言:

張貼留言