2017-01-17 11 views
0

私はmoodle 3.1+を使用しています。私はreadfile関数を使ってWebrootの外側にあるファイルを読み込もうとしています。ファイルはビデオファイルですが、拡張子なしで保存されます。今、スクリプトを実行すると、「ファイルが壊れているためビデオを再生できません」というエラーが表示されます。phpを使ってWebルート外のビデオファイルを読む

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

あなたの目標について

答えて

0

以下のコードを使用してファイルを表示できました。 $ファイルパスを動的に

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

がわからない助けるが、私はそれがそのようにmoodledataにアクセスするには良いアイデアだとは思わないでください。どのように権限を処理しますか?ファイルが削除されるケースをどのように処理しますか?

なぜそれを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); 

。しかし、私は解決策を見つけることができました。そして、それはムードル自体を通してそれを提供します。 – user1690835

関連する問題