Ruby on rails 在Rails应用程序中,将私有文档放在何处?
我有一些模板文件要在rails应用程序中使用。在两种情况下,我想知道将它们放在哪里(哪个目录下):Ruby on rails 在Rails应用程序中,将私有文档放在何处?,ruby-on-rails,file,file-upload,ruby-on-rails-3.1,Ruby On Rails,File,File Upload,Ruby On Rails 3.1,我有一些模板文件要在rails应用程序中使用。在两种情况下,我想知道将它们放在哪里(哪个目录下): 它们对我的应用程序是私有的(只有网站管理员可以删除、更改它们) 它们对我的应用程序是私有的,但也可以由管理员管理(删除、修改) 评论后更新 由于您希望在本地提供这些文件,所以只需将它们放在/public/文件夹和任何/assets/文件夹之外,就可以了。您可以在此处阅读有关公共和资产文件夹的更多信息:假设: /private/ 我相信,在我下面的原始答案中链接的SO问题中,也使用了通过控制器而不
/private/
我相信,在我下面的原始答案中链接的SO问题中,也使用了通过控制器而不是静态方式访问文件的方法。根据文件改编:
send_file("#{Rails.root}/private/#{filename}",
:filename => "#{filename}",
:type => "application/pdf", #for example if pdf
:disposition => 'inline') #send inline instead of attachment
远程服务的原始答案以及下面的发送文件
关于1)应用程序专用的文件
您可以在类似Amazon S3的系统中锁定这些私有文件,该系统提供了Callmeed在中解释的授权访问。然后,只有您的应用程序才能授权访问文件
关于2)管理员也可以访问
仅使用第1部分的问题是,它会在一段有限的时间内解锁文件,在此期间我假定这些文件是公开的。如果你想回避这个问题,我想你需要从Pavel Shved那里得到解决方案,实际上是在上面同样的问题中
在该解决方案中,文件通过提供文件二进制数据的路由/控制器提供,而不是使用指向文件的URL
组合解决方案
从S3读取文件时,只有您的应用程序被授权进行访问(不公开打开)。然后直接通过控制器提供数据,控制器可以授权您想要的任何人
注意事项
- 直接从控制器提供二进制数据似乎会扼杀系统的性能 应用程序,如果它是经常使用,但我从来没有尝试过
- 如果你能找到一个更简单的方法来完成第1部分),第2部分仍然可以使用该解决方案