У меня есть этот код для чтения файлов, которые хранятся за пределами общей папки.
$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.
Я думаю, что проблема связана с тем, что каким-то образом заголовки не отправляются правильно.
Отладчик Firefox сообщает: «HTTP« Content-Type »для« text / html »не поддерживается. Загрузка медиаресурса http://www.aidactiv.com/filep.php?f=14&т = с&Тип = MP4 не удалось.»
Предполагая, что вы можете установить mod_xsendfile , Я бы сделал это:
$path = '/full/path/to/file.mp4';
header("X-Sendfile: $path");
die();
В противном случае просто проверьте этот ответ.
Других решений пока нет …