我想在我的页面中放置一些html5视频,但只能向登录的用户提供对此视频的访问权限(因此,未登录的用户必须看不到视频,如果他们有网址的话):
<video width="320" height="240" controls>
<source src="/video.mp4" type="video/mp4">
<source src="/video.m4v" type="video/m4v">
Your browser does not support the video tag.
</video>
我在我的行动中尝试了类似的东西(使用前置过滤器进行访问限制):
def video
respond_to do |format|
format.m4v{
send_data File.join([Rails.root, "public", "videos", "sample.m4v"]), type: 'video/m4v', disposition: :inline
}
format.mp4{
send_data File.join([Rails.root, "public", "videos", "sample.mp4"]), type: 'video/mp4', disposition: :inline
}
end
end
但是这是将文件作为附件发送,而不仅仅是提供服务。
有可能吗?如果是的话,怎么办呢?
谢谢
答案 0 :(得分:0)
您不想使用video_tag
将视频呈现为视图的一部分吗?
如果是这样,只需使用您希望视频显示的ERB文件中的设计助手user_signed_in?
。这样可确保只有已登录的用户才能在video_tag
中看到该视频。< / p>
<% if user_signed_in? %>
<%= video_tag ['/video.mp4', '/video.m4v'], controls: true, height: '240', width: '320' %>
<% end %>
有关video_tag
的详细信息,请参阅:
http://api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html#method-i-video_tag
http://guides.rubyonrails.org/layouts_and_rendering.html#linking-to-videos-with-the-video-tag
答案 1 :(得分:0)
现在这个工作正常,我错过了一个选项,即:stream =&gt;真正。随着视频以正确的方式提供。
send_file File.join([Rails.root, "private/videos", @lesson.link_video1 + ".#{extension}"]),
:disposition => :inline, :stream => true
现在的问题是另一个问题,我在这里问了