Nuevo en la versión 1.18.
Definición
MongoDB\GridFS\Bucket::registerGlobalStreamWrapperAlias()Registra un alias para el bucket, lo que permite acceder a los archivos dentro del bucket utilizando una string de nombre de archivo básica (por ejemplo,
gridfs://<bucket-alias>/<filename>).function registerGlobalStreamWrapperAlias(string $alias): void
Parámetros
$alias: arreglo- Una cadena no vacía que se utiliza para identificar el depósito GridFS al acceder a archivos mediante el contenedor de flujo
gridfs://.
Comportamiento
Después de registrar un alias para el bucket, se puede acceder a la revisión más reciente de un archivo utilizando una string de nombre de archivo en el formato gridfs://<bucket-alias>/<filename>.
Funciones de stream soportadas:
fopen() con los modos "r", "rb", "w" y "wb"
En el modo de lectura, el contexto del flujo puede incluir la opción gridfs['revision'] para especificar el número de revisión del archivo que se desea leer. Si se omite, se leerá la revisión más reciente (revisión -1).
En el modo de guardar, el contexto del flujo puede contener la opción gridfs['chunkSizeBytes']. Si se omite, los valores predeterminados se heredan de la opción de instancia Bucket.
Las funciones rename y unlink renombrarán o removerán todas las revisiones de un nombre de archivo. Si el archivo no existe, estas funciones generan un FileNotFoundException.
Ejemplo
Leer y guardar en un bucket de GridFS usando el contenedor de stream gridfs://
El siguiente ejemplo demuestra cómo registrar un alias para un depósito GridFS y usar las funciones file_exists(), file_get_contents() y file_put_contents() para leer y escribir en el depósito.
Cada llamada a estas funciones realiza una solicitud al 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');
La vista de salida se ilustraría como sigue:
bool(false) bool(true) Hello, GridFS!
Leer una revisión específica de un archivo
Al utilizar un contexto de stream, se puede especificar el número de revisión del archivo a leer. Si se omite, se lee la revisión más reciente.
$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);
La vista de salida se ilustraría como sigue:
Hello, GridFS! (v0)