Rails carrivewave 改变默认存放位置后遇到无法在线预览视频问题

xiaoxiao · 发布于 2017年06月05日 · 最后由 xiaoxiao 回复于 2017年06月05日 · 127 次阅读
5083

carrivewave上传之后默认是存放到public目录下的,现在我修改了存放目录,具体配置如下

CarrierWave.configure do |config|
  # These permissions will make dir and files available only to the user running
  # the servers
  config.permissions = 0660
  config.directory_permissions = 0760
  config.storage = :file
  # This avoids uploaded files from saving to public/ and so
  # they will not be available for public (non-authenticated) downloading
  #config.root = Rails.root
  config.root = "/home/av_data"
end

原先预览视频的代码如下

<%= videojs_rails sources: { mp4: URI.decode(@video.file.url) }, poster:image_path("view.png"), id:"video_preview" %>

改过carrivewave存放位置之后没法访问了,原因是原来在浏览器中输入http://mysite.com/video.mp4 是可以直接访问到public目录下的存放的video.mp4的,现在目录换了,Rails应该是能改哪个配置参数就能访问到新的存放目录下的文件。

共收到 2 条回复
1107

这个在 Proxy(通常就死 Nginx)里做,而不要在 Rails 这边做,就是一个匹配 location 然后重定向的事情,跟 Nginx 这边配置 Assets Pipeline 的方法一样,了解,修改下就好了

5083

恩。谢谢,你的意思就是我生产环境下弄的配置

location ~ ^/uploads/ {
        root /home/public;
        expires max; # or whatever you want to use ie 24h
        add_header Cache-Control public;
        break;
 }

利用nginx进行重新定义root路径,我刚开始也是这么想到,但是我开发环境下这个预览就没法看了,我有点强迫症😀

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册