从公共文件夹外部读取视频文件是有选择地工作的

时间:2015-02-09 13:48:54

标签: php video readfile

我有这个代码用于读取存储在公用文件夹之外的文件。

$file = '/full/path/to/file.mp4';
$mime_type = mime_content_type($file);  
header('Content-Type: '.$mime_type);
readfile($file);

问题是这是有选择性的。意味着,它适用于某些文件,而对于其他文件,此代码不起作用。起初,我认为问题与上传的文件有关(通过使用uploadify的网络表单)。所以我下载了该文件,并将其上传回公共文件夹并从那里回复。奇怪的是,它开始工作了。

<h2>MP4 video from public folder</h2>
    <video id="video_1" class="video-js vjs-default-skin vjs-big-play-centered"
      controls preload="auto" width="600" height="300" style="overflow:hidden" data-setup='{"example_option":true}'>
     <source src="upload0/1423477304-ex4_original.mp4" type="video/mp4" />
     <p class="vjs-no-js">UPDATE_BROWSER</p>
    </video>

    <h2>MP4 video from outside of the public folder</h2>
    <video id="video_1" class="video-js vjs-default-skin vjs-big-play-centered"
      controls preload="auto" width="600" height="300" style="overflow:hidden" data-setup='{"example_option":true}'>
     <source src="filep.php?f=14&t=c&type=mp4" type="video/mp4" />
     <p class="vjs-no-js">UPDATE_BROWSER</p>
    </video>

我已将上述代码放在http://www.aidactiv.com/t3.php中,如您所见,第二个示例中的相同视频文件无效。

这种情况不会一直发生,上面的代码适用于其他一些mp4格式的视频。

1 个答案:

答案 0 :(得分:0)

我认为问题与以某种方式未正确发送标题有关。

Firefox调试器说:“不支持”text / html“的HTTP”Content-Type“。媒体资源http://www.aidactiv.com/filep.php?f=14&t=c&type=mp4的加载失败。”

假设您可以安装mod_xsendfile,我会这样做:

$path = '/full/path/to/file.mp4';
header("X-Sendfile: $path");
die();

否则,只需检查this answer