Lee y escribe archivos

En el entorno estándar de PHP 5 en Google App Engine, no puedes escribir en el sistema de archivos local en el que se implementa tu aplicación. Este comportamiento garantiza la seguridad y la escalabilidad de tu aplicación.

Sin embargo, si tu aplicación necesita escribir y leer archivos en tiempo de ejecución, el entorno estándar de PHP 5 proporciona un wrapper integrado de transmisión de Google Cloud Storage que te permite usar muchas de las funciones estándar del sistema de archivos PHP para leer y escribir archivos.

Estas son las dos formas posibles de escribir archivos en Google Cloud Storage:

  • Escribir archivos desde tu app
    • Escribir archivos simples
    • Escritura de archivos de transmisión
  • Permitir al usuario subir archivos a Google Cloud Storage

Escribe archivos desde tu app

Si escribes archivos desde tu app, puedes escribir el archivo completo de una sola vez o puedes transmitir la escritura del archivo.

El wrapper de transmisión de App Engine para Cloud Storage está integrado en el entorno de ejecución y se usa cuando proporcionas un nombre de archivo que comienza con gs://. El wrapper requiere que el nombre del bucket o del objeto del archivo tenga el siguiente formato:

gs://bucket_name/desired_object_name

Escribir archivos simples

Para escribir datos en Google Cloud Storage desde tu app, usa file_put_contents mediante una URL de Cloud Storage válida. Por ejemplo:

file_put_contents("gs://${my_bucket}/hello.txt", $newFileContent);

En el ejemplo anterior, my_bucket es un bucket de Google Cloud Storage configurado de forma adecuada.

También, si deseas usar opciones de transmisión para suministrar permisos, almacenamiento en caché u opciones de metadatos, puedes escribir el archivo de la siguiente manera:

$options = ['gs' => ['Content-Type' => 'text/plain']];
$context = stream_context_create($options);
file_put_contents("gs://${my_bucket}/hello_options.txt", $newFileContent, 0, $context);

Escritura de archivos de transmisión

Como alternativa, puedes usar fopen y fwrite para escribir datos en forma de transmisión:

$fp = fopen("gs://${my_bucket}/hello_stream.txt", 'w');
fwrite($fp, $newFileContent);
fclose($fp);

Ten en cuenta que cuando usas transmisión, los datos pasan a Google Cloud Storage en fragmentos más pequeños. No necesitas saber la longitud total de los datos que se escribirán, ya que eso se calculará cuando el recurso del archivo esté cerrado:

Estas son las formas básicas de escribir archivos. Para casos prácticos especiales y administración de archivos más avanzada, consulta la lista de temas en Dónde continuar.

Borra archivos

Si quieres borrar el archivo en sí, usa la función unlink() de PHP.

Cargas de usuario

Para obtener detalles sobre esta opción de escritura de archivos, consulta Cómo permitir a los usuarios subir archivos

Lee archivos

Para obtener información sobre cómo leer archivos desde Google Cloud Storage, consulta Cómo proporcionar acceso público a los archivos

Configuración y requisitos

Tienes que activar Google Cloud Storage y crear un bucket. Consulta Configuración para obtener más detalles.

Funciones compatibles del sistema de archivos PHP 5

Se admiten muchas de las funciones de archivos de PHP 5 en general usadas, junto con la información del archivo y las funciones del directorio. Para obtener una lista completa de las funciones de PHP admitidas, consulta la sección sobre compatibilidad de funciones del sistema de archivos de PHP 5.

Características extendidas que proporciona la API de herramientas de Cloud Storage

El wrapper de transmisión de Google Cloud Storage te permite usar llamadas del sistema de archivos PHP. Sin embargo, hay características extendidas disponibles que tal vez necesites para un uso óptimo de Google Cloud Storage. Estas características extendidas las proporciona la API de herramientas de Cloud Storage:

Esta API brinda un conjunto de funciones que admiten la entrega de archivos y de imágenes, junto con otras utilidades de valor. Cubriremos varias de ellas en las otras páginas de temas.

¿Existe alguna otra forma de leer y escribir archivos?

Una aplicación de PHP 5 en App Engine debe usar el wrapper de transmisión de Cloud Storage para escribir archivos en el entorno de ejecución. Sin embargo, si una app necesita leer archivos y estos son estáticos, puedes optar por leer archivos estáticos subidos con tu app mediante funciones del sistema de archivos PHP, como file_get_contents.

Por ejemplo:

$fileContents = file_get_contents($filePath);

En el ejemplo anterior, la ruta especificada debe ser relativa a la secuencia de comandos que accede a ellos.

Cuando implementas tu app en App Engine, debes subir los archivos en el subdirectorio de una aplicación y configurar el archivo app.yaml para que tu app pueda acceder a ellos. Para obtener detalles completos, consulta Configuración de la aplicación de PHP 5 con app.yaml.

En la configuración de app.yaml, ten en cuenta que si usas un archivo estático o un controlador de directorio (static_files o static_dir), debes especificar application_readable configurado como verdadero; de lo contrario, tu app no podrá leer los archivos. Sin embargo, esto no es necesario si un controlador script entrega los archivos, ya que los controladores de secuencia de comandos pueden leer estos archivos de forma predeterminada.

Próximos pasos

Lee los siguientes temas para obtener más detalles sobre cómo usar la API de herramientas de Cloud Storage: