moodle — чтение видеофайла вне webroot с помощью переполнения стека

Я использую Moodle 3.1+. Я пытаюсь прочитать файл вне webroot с помощью функции readfile. Файл представляет собой видеофайл, но сохраняется без расширения. Теперь, когда я выполняю сценарий, я получаю сообщение об ошибке «видео не может быть воспроизведено, потому что файл поврежден».

header('Content-Type: video/mp4');
readfile('../../../../moodledata/filedir/17/73/17735b4721faa7d59e1fd8a2300135a3f04c9ea6');

Пожалуйста помоги

0

Решение

Не уверен в своей цели, но я не думаю, что это хорошая идея, чтобы получить доступ к информации о настроении таким образом. Как вы обрабатываете разрешения? И как вы будете обрабатывать случай, когда файл будет удален?

Почему бы не подать его через сам Moodle? Я полагаю, вы хотите предложить файлы для скачивания? /ressource/view.php будет хорошей отправной точкой. Вы можете создать свой собственный скрипт на основе редиректа, который использует view.php для перенаправления в конкретный репозиторий.

$path = '/'.$context->id.'/mod_resource/content/'.$resource->revision.$file->get_filepath().$file->get_filename();
$fullurl = moodle_url::make_file_url('/pluginfile.php', $path, $displaytype == RESOURCELIB_DISPLAY_DOWNLOAD);
redirect($fullurl);
0

Другие решения

Мне удалось показать файл, используя приведенный ниже код.

$fs = get_file_storage();
$file = $fs->get_file_by_hash(sha1($filepath));
send_stored_file($file, 0, 0);

где $ filepath генерируется динамически, как показано ниже

"/$context->id/mod_lesson/mediafile/0".$lesson->mediafile
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector