2012-07-22 104 views
0

如果您知道大部分目錄,但是有一個文件夾根據數據庫中文件的ID和名稱更改,是否可以打開文件?文件文件是基於用戶命名文件的。例如,在下面的代碼中,id將根據數據庫中文件的ID進行更改,並且文件夾名稱將根據用戶的名稱進行更改。在我的情況下,文件的擴展名也可以改變。打開文件,其中的目錄路徑和文件名更改爲Ruby

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

路徑,像這樣的'File.open( 「/公/電子郵件/#{ID} /#{文件名}」)'什麼問題? – 2012-07-22 17:31:39

回答

1

我建議你File示範店的所有元數據。然後,它的串插的一個簡單的例子:

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

這並不當然讓你開到注入式攻擊 - 例如,如果用戶名的文件../../../../boot/grub.conf或東西 - 但那是特定應用,並給你執行。

+0

謝謝。那就是我正在尋找的東西。在我的情況下,答案是File.read(「public/emails /#{id} /#{email_file_name}」) – SilverNightaFall 2012-07-22 17:54:05

0

是否與附加冷杉和文件名作爲

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

File.open(path)