0

如果您知道大部分目录,是否有一种方法可以打开文件,但是有一个文件夹会根据数据库中文件的 id 而更改,并且文件文件的名称基于用户命名文件的名称。例如,在下面的代码中,id 将根据数据库中文件的 id 更改,文件夹名称将根据用户命名它的名称更改。在我的情况下,文件的扩展名也可以改变。

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

2 回答 2

1

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

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

这当然会让您容易受到注入式攻击——例如,如果用户命名他们的文件../../../../boot/grub.conf或其他东西——但这是特定于应用程序的,由您来实现。

于 2012-07-22T17:36:53.217 回答
0

将冷杉和文件名附加到路径是否有任何问题,例如

dir = "2" # the name of dir from database entry
filename = "abc"
extension = ".png"
path = "path/dir/#{dir}/#{filename}#{extension}"

File.open(path)
于 2012-07-22T17:37:02.907 回答