我正在开发仅向登录用户提供大型视频的应用程序。
为了使这些视频保持私密性,我将它们放在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] 删除。
我来说两句