我真的不知道怎么问这个。
我正在尝试播放cgi-script
的视频文件。
这是我的代码(它正在运行):
#!/usr/bin/perl
use warnings;
use strict;
use CGI;
my $cgi = CGI->new;
print $cgi->header(
-type=> "text/html" );
print <<EOF;
<video width="320" height="240" controls>
<source src='http://127.0.0.1/video.mp4' type='video/mp4'>
Your browser does not support the video tag.
</video>
EOF
在<source>
我正在播放视频路径。
#!/usr/bin/perl
use warnings;
use strict;
use CGI;
my $cgi = CGI->new;
print $cgi->header(
-type=> "text/html" );
print <<EOF;
<video width="320" height="240" controls>
<source src="home/praveen/ubuntu_Workspace/c/video.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
EOF
在此代码中,<source>
是我本地目录的路径。
在我将路径(如/home/praveen/ubuntu_workspace/c/video.mp4
)提供给我的本地驱动器时,我无法找到路径。
这是我的error.log
文件写的:
[Fri Jan 29 13:06:43 2016] [error] [client 127.0.0.1] File does not exist: /usr/lib/cgi-bin/home, referer: http://127.0.0.1/test.cgi
经过一些谷歌搜索后,我发现在网络服务器中它不会在file:///
树的上下文中提供html。
请有人告诉我如何访问本地文件。(例如/home/praveen/../test.mp4
。为什么会出现这样的错误。
请在我出错的地方建议我。
答案 0 :(得分:1)
<source>
元素上的“src”属性需要一个URL,而不是文件系统路径。如果您提供的来源是:
家/普利文/ ubuntu_Workspace / C / video.mp4
这是一个相对URL并且(假设没有Web服务器重写规则)服务器将假定“home”指的是名为“home”的目录,该目录是HTML文件所在目录的子目录。并且这不存在,因此您得到“文件不存在”错误。
如果您提供的来源是:
/home/praveen/ubuntu_Workspace/c/video.mp4
这是一个绝对URL,并且(同样,假设没有Web服务器重写规则)服务器将在服务器上的Web空间的根目录中查找“home”目录。这可能是/var/www/
或类似的东西。同样,该目录不存在,您将得到相同的错误。
您的网络服务器只能访问网络空间内的文件。这是一项安全功能。你真的不想改变它。
解决方案是将视频文件移动到此主机的Web空间内的目录中。
更新:另一个选项是配置您的网络服务器以支持per-user web directories并将视频文件放在那里。