我有这段代码可以读取存储在公共(public)文件夹之外的文件。
$file = '/full/path/to/file.mp4';
$mime_type = mime_content_type($file);
header('Content-Type: '.$mime_type);
readfile($file);
问题是这是有选择地工作的。意思是,它适用于某些文件,而对于其他文件,此代码不起作用。起初,我认为问题与上传的文件有关(通过使用 uploadify 的网络表单)。所以我下载了该文件,并将其上传回公共(public)文件夹并从那里回显。奇怪的是,它在这里开始起作用了。
<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 格式的视频。
最佳答案
我认为问题与标题未正确发送有关。
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 .
关于php - 从公共(public)文件夹外部读取视频文件有选择地工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28411248/