打开Ruby中目录路径和文件名更改的文件

时间:2012-07-22 17:28:23

标签: ruby

如果您知道大部分目录,是否有办法打开文件,但有一个文件夹根据数据库中文件的ID更改,文件文件的名称取决于用户为文件命名的内容。例如,在下面的代码中,id将根据数据库中文件的ID进行更改,文件夹名称将根据用户的名称进行更改。在我的情况下,文件的扩展名也可以改变。

File.open("/public/emails/:id/:filename") 

2 个答案:

答案 0 :(得分:1)

我建议您的File模型存储所有这些元数据。然后它是字符串插值的一个简单例子:

file = File.find(...)
File.open("/public/emails/#{file.id}/#{file.name}.#{file.extension}")

这当然会让您对注入式攻击持开放态度 - 例如,如果用户将其文件命名为../../../../boot/grub.conf或其他东西 - 但这是特定于应用程序的攻击,由您自行实施。

答案 1 :(得分:0)

将fir和文件名附加到路径(例如

)是否有任何问题
dir = "2" # the name of dir from database entry
filename = "abc"
extension = ".png"
path = "path/dir/#{dir}/#{filename}#{extension}"

File.open(path)