ID de región
REGION_ID
es un código abreviado que Google asigna en función de la región que eliges cuando creas la app. El código no corresponde a un país ni a una provincia, aunque algunos ID de región puedan parecer similares a los códigos de país y provincia que se suelen usar. En el caso de las apps creadas después de febrero de 2020, REGION_ID.r
se incluye en las URL de App Engine. En el caso de las apps existentes creadas antes de esta fecha, el ID de región es opcional en la URL.
Obtén más información acerca de los ID de región.
Cuando subes archivos directo a Google Cloud Storage, creas una HTTP POST en una URL específica (lo explicaremos en breve). Luego, App Engine usa un servicio de cargas específico para manejar la publicación y escribir el archivo en Google Cloud Storage. Cuando finaliza la escritura del archivo, App Engine notifica a tu aplicación que ya se realizó la carga. Dado que solo se invoca a la aplicación una vez que se completa la carga, puedes usar este método para subir archivos muy grandes (hasta el máximo actual de 100 terabytes).
Es más rápido y rentable que los usuarios suban los archivos directo a Google Cloud Storage que escribir a Google Cloud Storage desde tu aplicación de App Engine, ya que esto consume horas de instancia y genera un costo. Además, el archivo no se escribe con una solicitud a la aplicación. Por lo tanto, está exento del tiempo de espera de la solicitud que, de lo contrario, se aplicaría y permite subir archivos muy grandes.
Implementa cargas de archivos
Para implementar la carga de archivos por parte de los usuarios, haz lo siguiente:
Importa
CloudStorageTools
:Crea la URL de carga específica de la aplicación con el método CloudStorageTools::createUploadUrl() en tu archivo
.php
, como se muestra a continuación:Para obtener más detalles sobre las opciones disponibles, consulta las opciones de
createUploadUrl
. Ten en cuenta quemy_bucket
seráYOUR_APP_ID
.REGION_ID.r.appspot.com
si usas el bucket predeterminado.Recuerda que debes empezar a subir archivos a esta URL dentro de los 10 minutos posteriores a su creación. Además, no puedes modificar la URL en absoluto, ya que está firmada y la firma se verifica antes de que comience la carga.
Usa esta URL como la acción para el formulario que usas cuando aceptas cargas, por ejemplo:
Una vez que se suben los archivos, se crea un POST a la ruta que se especificó como el primer parámetro de createUploadUrl
; en el ejemplo anterior, es /upload_handler.php
. El entorno de ejecución del PHP crea los $_FILES
correctos súper globales y tmp_filename
se refiere al nombre del archivo recién subido a Google Cloud Storage.
Por ejemplo, supongamos que el contenido de upload_handler.php es el siguiente:
var_dump($_FILES);
Si subes un archivo llamado hello.txt
, puede que se muestre el siguiente resultado:
array(1) {
['uploaded_files']=>
array(5) {
['name']=> string(14) 'hello.txt'
['type']=> string(10) 'text/plain'
['tmp_name']=> string(73) 'gs://my_bucket/L2FwcHMtdXBsb2FkL2Jsb2JzL2IxNUFBVGNJNXNTd0VqR0tFSUtDRGxadGc'
['error']=> int(0)
['size']=> int(1452)
}
}
Una vez que se completa la carga, puedes leer el archivo que se subió con el wrapper de transmisión gs://
. Usa move_uploaded_file
como harías con cualquier otro archivo subido, por ejemplo:
Opciones de createUploadUrl
Las opciones de createUploadUrl
se muestran en la siguiente tabla:
Opción | Descripción |
---|---|
max_bytes_per_blob |
Número entero. Valor predeterminado: unlimited . Es el valor del mayor tamaño de BLOB que se puede subir. |
max_bytes_total |
Número entero. Valor predeterminado: unlimited . Es el tamaño total de los BLOB que se subieron. |
gs_bucket_name |
String. Es el nombre del bucket de Google Cloud Storage al que deberían subirse los BLOB. Si no especificas un valor, el BLOB se sube al bucket predeterminado de la aplicación. |