Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.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 on rails 在Rails应用程序中,将私有文档放在何处?_Ruby On Rails_File_File Upload_Ruby On Rails 3.1 - Fatal编程技术网

Ruby on 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问题中,也使用了通过控制器而不

我有一些模板文件要在rails应用程序中使用。在两种情况下,我想知道将它们放在哪里(哪个目录下):

  • 它们对我的应用程序是私有的(只有网站管理员可以删除、更改它们)
  • 它们对我的应用程序是私有的,但也可以由管理员管理(删除、修改)
  • 评论后更新

    由于您希望在本地提供这些文件,所以只需将它们放在/public/文件夹和任何/assets/文件夹之外,就可以了。您可以在此处阅读有关公共和资产文件夹的更多信息:假设:

    /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部分仍然可以使用该解决方案

    您需要在输出内容中使用第1部分)文件吗?感谢您的快速响应。我的问题是关于本地目录而不是外部位置。资产管道是Rails用来管理资产(图像、javascript文件和样式表文件)的机制(链轮),我的问题更简单,是关于在应用程序内处理私有模板文件(文档)。我的意思是,把它们放在哪里,在rails目录结构中把它们放在哪里最好?我找不到人们使用的任何规范位置(我想你也找不到)。在我的回答中,我建议使用/private/或公共和资产管道之外的任何其他文件夹。这些有什么问题吗?就我所知,我的答案中的两部分解决了你的问题。如果他们没有,你能提供更多的背景吗?