Docs 菜单
Docs 主页
/ / /
PHP 库手册
/ /

MongoDB\GridFS\Bucket::registerGlobalStreamWrapperAlias()

在此页面上

  • 定义
  • 参数
  • 行为
  • 例子

1.18版本新增

MongoDB\GridFS\Bucket::registerGlobalStreamWrapperAlias()

为存储桶注册一个别名,这样就可以使用基本文件名string (例如 gridfs://<bucket-alias>/<filename> )。

function registerGlobalStreamWrapperAlias(string $alias): void
$alias : array
非空string ,用于在使用 gridfs:// 流包装器访问文件时标识 GridFS 存储桶。

为存储桶注册别名后,可以使用 gridfs://<bucket-alias>/<filename> 格式的文件名string来访问文件的最新修订版本。

支持的流函数:

  • copy()

  • file_exists()

  • file_get_contents()

  • file_put_contents()

  • filemtime()

  • filesize()

  • file()

  • fopen() 使用 "r"、"rb"、"w" 和 "wb" 模式

  • Rename()

  • unlink()

在读取模式,流上下文可以包含选项gridfs['revision']来指定要读取的文件的修订号。 如果省略,则读取最新修订版(修订版-1 )。

在写入模式下,流上下文可以包含选项gridfs['chunkSizeBytes'] 。 如果省略,则从Bucket实例选项继承默认值。

函数renameunlink将重命名或删除文件名的所有修订版本。 如果文件名不存在,这些函数会抛出FileNotFoundException

以下示例演示了如何为 GridFS 存储桶注册别名,并使用函数file_exists()file_get_contents()file_put_contents()读取和写入存储桶。

每次调用这些函数都会向服务器发出请求。

<?php
$database = (new MongoDB\Client)->selectDatabase('test');
$bucket = $database->selectGridFSBucket();
$bucket->registerGlobalStreamWrapperAlias('mybucket');
var_dump(file_exists('gridfs://mybucket/hello.txt'));
file_put_contents('gridfs://mybucket/hello.txt', 'Hello, GridFS!');
var_dump(file_exists('gridfs://mybucket/hello.txt'));
echo file_get_contents('gridfs://mybucket/hello.txt');
unlink('gridfs://mybucket/hello.txt');

而输出将类似如下所示:

bool(false)
bool(true)
Hello, GridFS!

使用流上下文,您可以指定要读取的文件的修订号。 如果省略,则读取最新修订版本。

<?php
$database = (new MongoDB\Client)->selectDatabase('test');
$bucket = $database->selectGridFSBucket();
$bucket->registerGlobalStreamWrapperAlias('mybucket');
// Creating revision 0
$handle = fopen('gridfs://mybucket/hello.txt', 'w');
fwrite($handle, 'Hello, GridFS! (v0)');
fclose($handle);
// Creating revision 1
$handle = fopen('gridfs://mybucket/hello.txt', 'w');
fwrite($handle, 'Hello, GridFS! (v1)');
fclose($handle);
// Read revision 0
$context = stream_context_create([
'gridfs' => ['revision' => 0],
]);
$handle = fopen('gridfs://mybucket/hello.txt', 'r', false, $context);
echo fread($handle, 1024);

而输出将类似如下所示:

Hello, GridFS! (v0)

后退

OpenUploadStream()