Ram*_*ujo 5 file-upload ruby-on-rails file ruby-on-rails-3.1
我有一些模板文件,我想在我的rails应用程序中使用.我想知道给出两个场景的位置(在哪个目录下):
评论后更新
由于您希望在本地提供文件,只需将它们放在/ public /文件夹之外和任何/ assets /文件夹之外,您应该很好.您可以在此处阅读有关公共和资产文件夹的更多信息:第2节如何使用资产管道让我们说:
/private/
Run Code Online (Sandbox Code Playgroud)
我相信在我原来的答案中链接的SO问题中使用的第11节send_file仍然是通过控制器而不是静态提供文件访问的方式.改编自文档:
send_file("#{Rails.root}/private/#{filename}",
:filename => "#{filename}",
:type => "application/pdf", #for example if pdf
:disposition => 'inline') #send inline instead of attachment
Run Code Online (Sandbox Code Playgroud)
远程服务的原始答案与send_file一起使用
关于1)应用程序 私有的文件您可以将这些私有文件锁定在像Amazon S3这样提供授权访问的系统中,正如Callmeed在此SO问题中所解释的那样.然后,只有您的应用程序才能授权访问文件.
关于2)管理员也可以访问
仅仅使用第1部分的问题是它在一段有限的时间内解锁文件,在此期间我认为它们是公开可用的.因此,如果你想解决这个问题,我认为你需要从Pavel Shved那里获得解决方案,实际上是在上面的同一个问题中.
在该解决方案中,文件通过路径/控制器提供,该路由/控制器提供文件的二进制数据,而不是使用指向文件的URL.
综合解决方案
从S3读取文件,只有您的应用程序有权访问(不公开).然后直接通过控制器提供数据,控制器可以授权任何人.
注意事项