【问题标题】:Using Gridfs under Laravel 5.3 with mongo-php-library 2.2 driver在 Laravel 5.3 下使用 Gridfs 和 mongo-php-library 2.2 驱动程序
【发布时间】:2017-05-20 05:34:57
【问题描述】:

我们使用 PHP7,最新的 MongoDB PECL 包 (1.2.2) - Laravel 5.3 - jenssegers/laravel-mongodb 3.1

我想使用 GridFS。它通常在 MongoDB PECL 包中可用,但没有文档或工作代码示例。

【问题讨论】:

  • 在哪里可以使用 laravel-mongodb 应用 gridFS?如果是这样,您能否提供一个 sn-p 代码作为答案。那将非常有用

标签: php laravel-5 gridfs


【解决方案1】:

你可以通过这个link。这显示了如何将 gridFS 与 Laravel-mongodb 一起使用,并且您可能需要为此更新 mongo db 驱动程序。

另一个link供您参考。

虽然那里没有提供示例代码,但如果你使用 Laravel 处理过 Mongo,它会对你有所帮助。

希望对你有帮助

【讨论】:

  • 我也找到了那些链接......但是没有代码示例和文档,这远非微不足道
【解决方案2】:

您可以在 mongo-php-library 2.2 驱动程序上使用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);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-20
  • 1970-01-01
  • 1970-01-01
  • 2013-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多