Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using Gridfs under Laravel 5.3 with mongo-php-library 2.2 driver

We use PHP7, latest MongoDB PECL package (1.2.2) - Laravel 5.3 - jenssegers/laravel-mongodb 3.1

I want to use GridFS. It's normally available into the MongoDB PECL package but there are no documentation nor working code example.

like image 980
hotips Avatar asked Oct 30 '22 14:10

hotips


1 Answers

You can use Bucket class for upload and download documents to mongodb grid on mongo-php-library 2.2 driver.

//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);
}
like image 110
J.C. Gras Avatar answered Nov 15 '22 05:11

J.C. Gras