GridFSを使用して保存したmongoDBからオーディオファイルを読み込もうとしています。システムにファイルをダウンロードして再生することはできましたが、これらのオーディオ/ビデオ ファイルを DB 自体からストリーミングして、ブラウザーで再生したいと考えていました。ファイルをシステムにダウンロードせずにそれを行う方法はありますか? どんな助けでもいいでしょう。
2235 次
2 に答える
0
PHP GridFS サポートにはMongoGridFSFile::getResource()関数があり、ストリームをリソースとして取得できます。これはファイル全体をメモリにロードしません。fread/echo
またはstream_copy_to_streamと組み合わせると、ファイル全体がメモリにロードされるのを防ぐことができます。stream_copy_to_stream を使用すると、GridFSFile ストリームのリソースを STDOUT ストリームに単純にコピーできます。
<?php
$m = new MongoClient;
$images = $m->my_db->getGridFS('images');
$image = $images->findOne('mongo.png');
header('Content-type: image/png;');
$stream = $image->getResource();
stream_copy_to_stream( $stream, STDOUT );
?>
fseek()
または、返されたリソースに対してを使用して$stream
、ストリームの一部のみをクライアントに送り返すこともできます。HTTP Range requestsと組み合わせると、これをかなり効率的に行うことができます。
于 2013-08-12T11:16:27.940 に答える