Tag: x sendfile

带有符号链接的mod_xsendfile

我正在使用xsendfile和我的Rails 3应用程序遇到问题。 我使用capistrano来管理部署,在每个版本中,都有一个指向shared / assets目录的符号链接(例如/ var / www / site / releases / 1234 / assets => / var / www / site / shared / assets )。 问题是XSendFile似乎没有遵循符号链接。 在我的apache日志中,我看到以下错误: The given path was above the root path: xsendfile: unable to find file: /var/www/site/releases/20110406205607/assets/pdfs/2/original/test.pdf 我将XSendFilePath配置设置为 XSendFilePath /var/www/site/shared/assets 如果我将配置切换到: XSendFilePath /var/www/site/releases 一切正常。 所以我有几个问题: 1)有没有办法让XSendFilePath跟随符号链接? 2)将XSendFilePath设置为我的发行版dir是否存在安全风险? 换句话说,我是否打开了对所有dir的访问权限?

rails media file stream通过send_data或send_file方法接受字节范围请求

我有以下问题。 声音在公共文件夹中隐藏,因为只有某些用户应该有权访问声音文件。 所以我做了一个特定的方法,它就像一个声音url,但首先计算,是否允许当前用户访问该文件。 该文件由send_data方法发送。 问题是,如果它的工作原理我工作得很慢……我用来播放声音的jplayer插件的开发者告诉我,我应该能够接受字节范围请求以使其正常工作… 如何通过send_data或send_file发送文件在rails控制器中执行此操作? 谢谢,马库斯

rails – x-sendfile +临时文件

前段时间我写了一个关于在rails应用程序中使用临时文件的问题 。 在特定情况下,我决定使用tempfile 如果我还想使用x-sendfile指令( 作为Rails 2中的参数,或作为Rails 3中的配置选项 ),这会导致问题,因此文件发送由我的Web服务器直接处理,而不是我的rails应用程序。 所以我想做这样的事情: require ‘tempfile’ def foo() # creates a temporary file in tmp/ Tempfile.open(‘prefix’, “#{Rails.root}/tmp”) do |f| f.print(‘a temp message’) f.flush send_file(f.path, :x_sendfile => true) # send_file f.path in rails 3 end end 此设置有一个问题:文件在发送之前被删除! 一方面,一旦Tempfile.open块结束, tempfile就会删除该文件。 另一方面, x-sendfile使send_file调用异步 – 它返回的速度非常快,因此服务器几乎没有时间发送文件。 我现在最好的解决方案是使用非临时文件(File而不是Tempfile),然后是定期擦除temp文件夹的cron任务。 这有点不优雅,因为: 我必须使用自己的临时文件命名方案 文件在tmp文件夹上停留的时间比需要的时间长。 有更好的设置吗? 或者,异步send_file上至少有一个“成功”回调,所以我可以在完成后删除f吗? 非常感谢。

在Ruby on Rails中,在send_file方法之后从服务器中删除该文件

我使用以下代码在Rails中发送文件。 如果File.exist?(file_path) send_file(file_path,type:’text / excel’) File.delete(FILE_PATH) 结束 在这里,我试图发送文件,并在成功发送后从服务器中删除该文件。 但我面临的问题是,删除操作是在发送执行时执行的,由于我在浏览器中没有看到任何内容。 所以在Rails中有任何方法,一旦send_file操作完成,从服务器删除文件。 任何有关这方面的帮助将受到高度赞赏。 谢谢, 阿赫亚