Rails提供大文件

娘娘腔

我正在开发仅向登录用户提供大型视频的应用程序。

为了使这些视频保持私密性,我将它们放在Rails项目内的私有文件夹中,然后让Rails为它们提供服务,而不是使用公用文件夹并排除来自Apache的请求(以避免直接链接到它们)。

我在控制器中的操作如下所示:

def video
      respond_to do |format|
        format.mp4{
         send_file File.join([Rails.root, "private/videos", @lesson.link_video1 + ".mp4"]), 
      :disposition => :inline, :stream => true
        }
      end
  end

一切正常,但仅使用小文件,当我尝试使用真实文件时,就会收到错误消息:

NoMemoryError (failed to allocate memory)

我读到某处不是对大文件使用send_file的好习惯,但使用另一种方法来让apap为文件提供服务,在向移动Apple设备提供文件时遇到了问题,因为它们没有发送HTTP_REFERER。

您是否知道此内存限制有多小?我的视频从400MB到2GB(试图将其减少)。

我在这里找到的唯一问题是没有答案,无法从Rails的Assets文件夹中提供大型媒体文件

娘娘腔

我设法在Apache上激活X-Sendfile,而不是让Rails提供大文件。与Capistrano合作,我找到了一个很好的解决方案。这里说明了Capistrano和X-Sendfile

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章