MongoDB\GridFS\Bucket::registerGlobalStreamWrapperAlias()
Nesta página
Novidades na versão 1.18.
Definição
MongoDB\GridFS\Bucket::registerGlobalStreamWrapperAlias()
Registra um alias para o bucket, que permite que os arquivos dentro do bucket sejam acessados usando uma string básica de nome de arquivo (por exemplo
gridfs://<bucket-alias>/<filename>
).function registerGlobalStreamWrapperAlias(string $alias): void
Parâmetros
$alias
: array- Uma string não vazia usada para identificar o bucket GridFS ao acessar arquivos usando o stream wrapper
gridfs://
.
Comportamento
Depois de registrar um alias para o bucket, a revisão mais recente de um arquivo pode ser acessada usando uma string de nome de arquivo no formato gridfs://<bucket-alias>/<filename>
.
Funções de fluxo suportadas:
fopen() com modos "r", "rb", "w" e "wb"
No modo de leitura, o contexto do stream pode conter a opção gridfs['revision']
para especificar o número de revisão do arquivo a ser lido. Se omitido, a revisão mais recente é lida (revisão -1
).
No modo de gravação, o contexto do fluxo pode conter a opção gridfs['chunkSizeBytes']
. Se omitidos, os padrões são herdados da opção de instância Bucket
.
As funções rename
e unlink
renomearão ou removerão todas as revisões de um nome de arquivo. Se o nome do arquivo não existir, estas funções lançarão um FileNotFoundException
.
Exemplo
Ler e gravar em um bucket GridFS usando o gridfs://
wrapper de fluxo
O exemplo a seguir demonstra como registrar um alias para um bucket GridFS e usar as funções file_exists()
, file_get_contents()
e file_put_contents()
para ler e escrever no bucket.
Cada chamada para essas funções faz uma solicitação ao servidor.
$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');
A saída seria então semelhante a:
bool(false) bool(true) Hello, GridFS!
Ler uma revisão específica de um arquivo
Usando um contexto de fluxo, você pode especificar o número de revisão do arquivo a ser lido. Se omitido, a revisão mais recente é lida.
$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);
A saída seria então semelhante a:
Hello, GridFS! (v0)