如何访问服务器主目录中目录中的视频文件

时间:2019-02-07 21:28:08

标签: php

无法正确使用php代码加载存储在主目录中的视频mp4文件。

您好,我正在建立一个销售mp4指导视频文件的WP网站。为了保护文件,我将它们放置在名为video的目录中,该目录位于主目录(位于public_html目录之外)中,以防止文件被免费下载。我正在尝试编写php代码以加载视频。但是,我无法访问/ home / username / videos中的视频。

我的代码:

add_action('template_redirect','video_redirect',5);

function video_redirect(){

        if (is_admin())

                    return;

        if (!is_page(videoplayerpageonmysite))

                    return;

$ filename =“ / home / username / videos / videofile.mp4”;

回显“您的浏览器不支持视频标签。”

每次运行代码时,都会显示支持格式的无视频...错误。

我只能让它在public_html文件夹中加载视频文件(这样才能完美工作),但是当它位于/ home / username / videos /中时却无法加载 请帮忙!

2 个答案:

答案 0 :(得分:0)

您不能为浏览器提供服务器硬盘上的文件路径,并且希望它能够加载它。它将解析为一个相对URL,询问HTTP服务器,然后获取404。

您需要为浏览器提供一个实际加载文件的URL。

如果您想限制谁可以访问它(例如,已付款的人),则可以编写一个PHP程序,检查该请求是否来自已付款的人(例如,身份验证+授权),然后阅读该文件并将其输出到HTTP响应中。

答案 1 :(得分:0)

您必须在视频代码中使用PHP脚本作为源URL,并指定应为其加载视频的一些标识符,例如src="loadvideo.php?id=1"之类的。 (这是因为源必须是可在Web服务器上实际访问的有效URL-不会忘记在用户计算机而非服务器上运行的浏览器无法导航到磁盘上的路径。如果可以,则移动您的public_html文件夹之外的文件将不提供任何安全性!)

然后将视频代码加载到页面中时,它将向该URL发出请求,这将导致PHP脚本运行。脚本必须将提供的ID与磁盘上的正确文件相关联,提取该文件的内容,并将其作为响应以及相应的标头(例如mime类型等)作为回应。您可能已经在线找到了这种模式的示例。

当然,PHP脚本还需要对请求进行身份验证,以确保请求者是已登录的付费用户,否则您仍然无法保护任何内容。没有最后一步,任何人都只能访问PHP脚本的URL并提供ID,直到获得结果为止,然后下载视频,就像将它们放在public_html文件夹中一样。但是,只要您正确实现安全性,只有已经为视频付费的用户才能下载它们。