Ruby on Rails 2.1 - 文件上传
您可能有一项要求,即希望网站访问者将文件上传到您的服务器。Rails 可以非常轻松地处理此要求。现在,我们将开始一个简单而小型的 Rails 项目。
像往常一样,让我们从一个名为 upload 的新 Rails 应用程序开始。让我们使用简单的 rails 命令创建应用程序的基本结构。
C: uby> rails -d mysql upload
现在,选择一个文件并上传。此文件将以实际文件名上传到 app/public/data 目录中,并显示一条消息,提示"文件已成功上传"。
注意 −如果输出目录中已经存在同名文件,则会覆盖该文件。
从 Internet Explorer 上传的文件
Internet Explorer 在发送的文件名中包含文件的完整路径,因此 original_filename 例程将返回类似的内容 −
C:\Documents and Files\user_name\Pictures\My File.jpg
而不仅仅是 −
My File.jpg
这可以通过 File.basename 轻松处理,它会删除文件名之前的所有内容。
def sanitize_filename(file_name) # 仅获取文件名,而不是完整路径(来自 IE) just_filename = File.basename(file_name) # 替换所有非字母数字、下划线或句号 # 带下划线 just_filename.sub(/[^\w\.\-]/,'_') end
删除现有文件
如果您想删除任何现有文件,这非常简单。您需要做的就是编写以下代码 −
def cleanup File.delete("#{RAILS_ROOT}/dirname/#{@filename}") if File.exist?("#{RAILS_ROOT}/dirname/#{@filename}") end
有关 File 对象的完整详细信息,您需要阅读我们的 Ruby 参考手册。