php - 从公共(public)文件夹外部读取视频文件有选择地工作

标签 php video readfile

我有这段代码可以读取存储在公共(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/

相关文章:

java - 如何从数组列表中读取多个不带符号的整数?

javascript - 在 fullcalendar v4 中编辑和删除事件

php - Laravel 媒体存储最佳实践

php - session 不起作用

php - Doctrine DBAL 可以批量插入吗?

ios - 现在允许使用 Instagram API 上传视频了吗?

javascript - 检测视频/音频是否在 html5 video 标签中停止

Android:如何使用 mediacodec 将两个重叠的视频保存为一个?

c - 我怎样才能用空格读取这个文件?

PHP ini 与数组性能对比