文档菜单
文档首页
/ / /
PHP 库手册
/ /

MongoDB\GridFS\Bucket::registerGlobalStreamWrapperAlias()

本页面内容

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

新功能在版本1.18.

MongoDB\GridFS\Bucket::registerGlobalStreamWrapperAlias()

为存储桶注册一个别名,这允许使用基本的文件名字符串访问存储桶内的文件(例如,gridfs://<bucket-alias>/<filename>)。

function registerGlobalStreamWrapperAlias(string $alias): void
$alias : 数组
一个非空字符串,用于在使用 gridfs:// 流包装器访问文件时识别 GridFS 存储桶。

注册存储桶别名后,可以使用以下格式的文件名字符串访问文件的最新版本:gridfs://<bucket-alias>/<filename>

支持的流函数

  • 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()

© . All rights reserved.