0
名
當我下載了包含"."
其名稱中的文件,我的代碼拋出一個異常:使用「。」下載文件時出錯。在RoR3
No route matches "/test/download/File%201.0%20BETA.docx"
的文件名是:「文件1.0 BETA.docx」
這裏我的代碼在我的控制器文件中下載文件:
def download
path = params[:path]
path = "#{Rails.root}/public/data/" + path
send_file(path+"."+params[:format])
end
我該如何解決?
你如何[保護](http://api.rubyonrails.org/classes/ActionController/Streaming.html#method-i-send_file)一些提供'params [:path] =的小丑= .. /../../ config/database'和'params [:format] = yaml'?如果他們得到'../'的數目是正確的,那麼看起來好像它將交出數據庫配置或者服務器上的任何其他文件,並且在名稱和正確權限中有一段時間。 – sarnold 2011-03-07 10:34:48
您確定當前代碼中的失敗是由於'.'嗎?我先下注了'%20'沒有被解碼,並且調用'send_file()'試圖找到一個名爲'File @ 201.0%20BETA.docx'的文件。您可能需要首先對參數進行URL解碼。 – sarnold 2011-03-07 10:36:49
@sarnold:我確定它是因爲「。」。當我刪除/替換「。」通過「_」它工作正常 – 2011-03-12 10:16:07