2017-04-20 5 views
1

Ich benutze PHP7, Laravel 5.4 und jenssegers/laravel-mongodb (PECL-Paket). Ich brauche GridFS zu verwenden, dass es in den MongoDB PECL-Paket enthalten ist, so versuche ich, GridFS wie folgt zu erhalten:GridFS in Laravel 5.4 funktioniert nicht

$gridfs = DB::connection('mongo')->getMongoDB()->getGridFS(); 

Aber es wirft die Ausnahme: „Call to undefined Methode MongoDB \ Database :: getGridFS() ". Irgendeine Idee davon?

Antwort

0

Wenn Sie mongo-php-library 2.2 Treiber, getGridFS() Methode nicht mehr vorhanden ist, jedoch können Sie Bucket Klasse für den Upload und Download von Dokumenten verwenden Raster MongoDB. Sie können versuchen, die folgenden:

//upload file 
$bucket = \DB::connection('mongodb')->getMongoDB()->selectGridFSBucket(); 
$resource = fopen($file_path, "a+"); 
$file_id = $bucket->uploadFromStream($file_path, $resource); 

//download file 
$bucket = \DB::connection('mongodb')->getMongoDB()->selectGridFSBucket(); 
$file_metadata = $bucket->findOne(["_id" => $file_id]); 
$path = $file_metadata->filename; 

if(!file_exists($path)) { 
    $downloadStream = $bucket->openDownloadStream($file_id); 
    $stream = stream_get_contents($downloadStream, -1); 
    $ifp = fopen($path, "a+"); 
    fwrite($ifp, $stream); 
    fclose($ifp); 
} 

Beachten Sie, dass $file_id Variable ein ObjectId ist, wenn Sie einen String-Wert haben, müssen Sie ObjectId konvertieren: $file_id = new \MongoDB\BSON\ObjectID($str_file_id);

Verwandte Themen