我试图创建一个只能在用户登录时才能访问的私有文件目录。为此,我使用了web目录外的文件夹,然后使用php访问它(如果允许的话)。
以下是一个例子:
function display_movie($file){
printf("`<video id='movie' width='960' height='416' controls='controls' onerror='fix()'>`<br/>
`<source src='movie.php?file=%s' type='video/ogg; codecs=\"theora, vorbis\"'>
</video>", rawurlencode($file)`);
}
这适用于图像,但打破了媒体播放器。另外,我只是在Linux机器上本地测试过它。
有什么想法吗?感谢。
这是在movie.php ...
if(file_exists($fileDir . md5($file) . $ext)) {
$contents = file_get_contents($fileDir . md5($file) . $ext);
}
header('Content-type: video/ogg');
echo $contents;
答案 0 :(得分:0)
你在movie.php中的<br />
是什么?
你有没有试过看看movie.php是否回应了文件内容? (在你的页面上查看源代码,然后复制电影源src“movie.php?file = ...”并将其粘贴到你的浏览器中,看看它是不是电影出来了。)
所有你需要在if语句中移动标题和echo,如果该文件不存在,你可以回显另一个标准电影:
if(file_exists($fileDir . md5($file) . $ext)) {
$contents = file_get_contents($fileDir . md5($file) . $ext);
} else {
$contents = file_get_contents($fileDir . md5(MOVIE_NOT_FOUND));
}
header('Content-type: video/ogg');
echo $contents;
如果MOVIE_NOT_FOUND是一个常数,那么如果找不到所请求的影片,你就会显示该影片。
你能做的另一件事就是在你的源src中输入你对电影php的全部uri(比如“http://localhost/some/uri/movie.php?file = ...”< / p>
你在哪里获得$ fileDir,$ file和$ ext,你是movie.php吗?
编辑:应该处理你有的file_get_contents问题
$file = $fileDir . md5($file) . $ext;
header('Content-type: video/ogg');
//set aditional headers you may whant here
ob_clean();
flush();
if( file_exists($file) )
{
readfile($file);
} else {
readfile($fileDir . md5(MOVIE_NOT_FOUND));
}
exit;