1

GridFSを使用して保存したmongoDBからオーディオファイルを読み込もうとしています。システムにファイルをダウンロードして再生することはできましたが、これらのオーディオ/ビデオ ファイルを DB 自体からストリーミングして、ブラウザーで再生したいと考えていました。ファイルをシステムにダウンロードせずにそれを行う方法はありますか? どんな助けでもいいでしょう。

4

2 に答える 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 に答える