簡體   English   中英

Laravel 5.4中的GridFS不起作用

[英]GridFS in Laravel 5.4 doesn't work

我正在使用PHP7,Laravel 5.4和jenssegers / laravel-mongodb(PECL包)。 我需要使用GridFS,它包含在MongoDB PECL包中,所以我試圖像這樣得到GridFS:

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

但它拋出異常:“調用未定義的方法MongoDB \\ Database :: getGridFS()”。 對此有何想法?

如果使用mongo-php-library 2.2驅動程序,則getGridFS()方法不再存在,但是您可以使用Bucket類將文件上載和下載到mongodb網格。 您可以嘗試以下方法:

//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);
}

注意$file_id變量是一個ObjectId,如果你有一個字符串值,你需要轉換為ObjectId: $file_id = new \\MongoDB\\BSON\\ObjectID($str_file_id);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM