ID de la région
Le REGION_ID
est un code abrégé que Google attribue en fonction de la région que vous sélectionnez lors de la création de votre application. Le code ne correspond pas à un pays ou une province, même si certains ID de région peuvent ressembler aux codes de pays et de province couramment utilisés. Pour les applications créées après février 2020, REGION_ID.r
est inclus dans les URL App Engine. Pour les applications existantes créées avant cette date, l'ID de région est facultatif dans l'URL.
En savoir plus sur les ID de région
Lorsque vous importez des fichiers directement dans Google Cloud Storage, vous créez une requête HTTP POST vers une URL spécifique. Cette étape est décrite ci-dessous. App Engine utilise ensuite un service d'importation spécifique pour gérer la requête POST et écrire le fichier dans Google Cloud Storage. Une fois l'écriture du fichier terminée, App Engine informe votre application que l'importation est terminée. Étant donné que votre application n'est appelée qu'à l'issue de l'opération, vous pouvez utiliser cette méthode pour importer des fichiers très volumineux, jusqu'à un maximum de 100 téraoctets.
L'importation de fichiers par l'utilisateur directement dans Google Cloud Storage est plus rapide et plus économique que l'écriture sur Google Cloud Storage à partir de votre application App Engine, car cette dernière consomme des heures d'utilisation de l'instance et entraîne donc des coûts. De plus, l'écriture de fichiers ne se produit pas dans une requête adressée à l'application. Par conséquent, cette méthode est exemptée du délai avant expiration de la requête qui s'applique généralement, et permet l'importation de très gros fichiers.
Mettre en œuvre des importations de fichiers
Pour mettre en œuvre l'importation de fichiers par l'utilisateur, procédez comme suit :
Importez
CloudStorageTools
:Créez l'URL d'importation spécifique à l'application en utilisant la méthode CloudStorageTools::createUploadUrl() dans le fichier
.php
comme suit :Consultez les options de
createUploadUrl
pour en savoir plus sur les options disponibles. Notez quemy_bucket
est appeléYOUR_APP_ID
.REGION_ID.r.appspot.com
si vous utilisez le bucket par défaut.Notez que vous devez commencer l'importation vers cette URL dans les 10 minutes suivant sa création. Par ailleurs, vous ne pouvez pas modifier l'URL de quelque manière que ce soit : celle-ci est signée et la signature est vérifiée avant le début de l'importation.
Utilisez cette URL en tant qu'action du formulaire que vous utilisez pour accepter les importations, par exemple :
Une fois les fichiers importés, une requête POST est créée sur le chemin spécifié en tant que premier paramètre de createUploadUrl
. Dans l'exemple ci-dessus, il s'agit de /upload_handler.php
. L'environnement d'exécution PHP forme la variable superglobale $_FILES
correspondante et tmp_filename
fait référence au nom du fichier récemment importé dans Google Cloud Storage.
Par exemple, supposons que le contenu de "upload_handler.php" est le suivant :
var_dump($_FILES);
L'importation d'un fichier appelé hello.txt
peut renvoyer le résultat suivant :
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)
}
}
Une fois l'importation terminée, vous pouvez lire le fichier importé à l'aide du wrapper de flux gs://
. Vous utilisez move_uploaded_file
comme vous le feriez normalement pour tout autre fichier importé, par exemple :
Options createUploadUrl
Les options createUploadUrl
valides sont indiquées dans le tableau suivant :
Option | Description |
---|---|
max_bytes_per_blob |
Entier. Valeur par défaut : unlimited Taille maximale autorisée pour un blob importé. |
max_bytes_total |
Entier. Valeur par défaut : unlimited Taille totale de tous les blobs importés. |
gs_bucket_name |
Chaîne. Nom d'un bucket Google Cloud Storage dans lequel les blobs sont importés. Si vous ne spécifiez pas de valeur, le blob est importé dans le bucket par défaut de l'application. |