Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Ruby中打开目录路径和文件名发生更改的文件_Ruby - Fatal编程技术网

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

在Ruby中打开目录路径和文件名发生更改的文件,ruby,Ruby,如果您知道目录的大部分内容,但有一个文件夹根据数据库中文件的id而更改,并且文件的名称基于用户对文件的名称,那么是否有方法打开文件。例如,在下面的代码中,id将根据数据库中文件的id更改,文件夹名称将根据用户名更改。在我的例子中,文件的扩展名也可以更改 File.open("/public/emails/:id/:filename") 我建议您的文件模型存储所有这些元数据。然后是字符串插值的一个简单例子: file = File.find(...) File.open("/public/em

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

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

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

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

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

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

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

File.open(path)

像这样的
文件.open(“/public/emails/{id}/{filename}”)
?谢谢。这就是我要找的。在我的例子中,答案是File.read(“public/emails/{id}/{email\u File\u name}”)