我有这个代码用于读取存储在公用文件夹之外的文件。
$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格式的视频。
答案 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。