Ryt*_*ius 56
如果我理解你需要什么,那么最简单的例子是:
控制器:
class UploadController < ApplicationController
def new
end
def create
name = params[:upload][:file].original_filename
path = File.join("public", "images", "upload", name)
File.open(path, "wb") { |f| f.write(params[:upload][:file].read) }
flash[:notice] = "File uploaded"
redirect_to "/upload/new"
end
end
Run Code Online (Sandbox Code Playgroud)
风景:
<% flash.each do |key, msg| %>
<%= content_tag :div, msg, :class => [key, " message"], :id => "notice_#{key}" %>
<% end %>
<% form_tag '/upload/create', { :multipart => true } do %>
<p>
<%= file_field_tag 'upload[file]' %>
</p>
<p>
<%= submit_tag "Upload" %>
</p>
<% end %>
Run Code Online (Sandbox Code Playgroud)
这将允许您上传任何文件,而无需任何检查或验证,在我看来,这不是有用的.
如果我自己做,那么我会使用像有效的宝石或无表格的宝石,只是无表格不再支持.这些宝石将允许您验证您上传的内容,使其更加清晰.
小智 6
您可以使用 FileUtils 将临时文件移动到目标路径
tmp = params[:my_file_field].tempfile
destiny_file = File.join('public', 'uploads', params[:my_file_field].original_filename)
FileUtils.move tmp.path, destiny_file
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23291 次 |
| 最近记录: |