ID regione
REGION_ID
è un codice abbreviato assegnato da Google in base alla regione selezionata quando crei l'app. Il codice non corrisponde a un paese o a una provincia, anche se alcuni ID regione possono sembrare simili ai codici di paesi e province di uso comune. Per le app create dopo febbraio 2020, REGION_ID.r
è incluso negli URL di App Engine. Per le app esistenti create prima di questa data, l'ID regione è facoltativo nell'URL.
Scopri di più sugli ID regione.
Quando carichi direttamente su Google Cloud Storage, esegui un POST HTTP a un URL specifico, che descriveremo tra un attimo. App Engine utilizza quindi un servizio di caricamento specifico per gestire il post e scrivere il file in Google Cloud Storage. Al termine della scrittura del file, App Engine informa la tua app del completamento del caricamento. Poiché l'app viene invocata solo al termine, puoi utilizzare questo metodo per caricare file di grandi dimensioni, fino al valore massimo corrente di 100 terabyte.
Il caricamento dei file da parte dell'utente direttamente in Google Cloud Storage è più veloce e conveniente rispetto alla scrittura in Google Cloud Storage dalla tua app App Engine, perché comporta un consumo di ore di istanze e comporta un costo. Inoltre, la scrittura del file non avviene all'interno di una richiesta all'applicazione. Pertanto, è esente dal timeout della richiesta che altrimenti si applicherebbe e consente il caricamento di file di grandi dimensioni.
Implementazione dei caricamenti di file
Per implementare il caricamento dei file utente:
Importa
CloudStorageTools
:Crea l'URL di caricamento specifico dell'applicazione utilizzando il metodo CloudStorageTools::createUploadUrl() nel file
.php
come segue:Per informazioni dettagliate sulle opzioni disponibili, consulta Opzioni
createUploadUrl
. Tieni presente chemy_bucket
saràYOUR_APP_ID
.REGION_ID.r.appspot.com
se utilizzi il bucket predefinito.Tieni presente che devi iniziare il caricamento su questo URL entro 10 minuti dalla sua creazione. Inoltre, non puoi modificare l'URL in alcun modo: è firmato e la firma viene controllata prima dell'inizio del caricamento.
Utilizza questo URL come azione per il modulo che utilizzi per accettare i caricamenti, ad esempio:
Dopo il caricamento dei file, viene eseguito un POST al percorso specificato come primo parametro di createUploadUrl
; nell'esempio precedente, si tratta di /upload_handler.php
. Il runtime PHP forma il superglobale $_FILES
corretto e tmp_filename
fa riferimento al nome del file appena caricato in Google Cloud Storage.
Ad esempio, supponiamo che i contenuti di upload_handler.php siano i seguenti:
var_dump($_FILES);
Il caricamento di un file denominato hello.txt
potrebbe produrre il seguente output:
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)
}
}
Al termine del caricamento, puoi leggere il file caricato utilizzando il wrapper stream gs://
. Utilizza move_uploaded_file
come faresti normalmente per qualsiasi altro file caricato, ad esempio:
Opzioni createUploadUrl
Le opzioni createUploadUrl
valide sono riportate nella tabella seguente:
Opzione | Descrizione |
---|---|
max_bytes_per_blob |
Numero intero. Valore predefinito: unlimited . Il valore della dimensione massima consentita per un blob caricato. |
max_bytes_total |
Numero intero. Valore predefinito: unlimited . La dimensione totale di tutti i blob caricati. |
gs_bucket_name |
Stringa. Il nome di un bucket Google Cloud Storage su cui caricare i blob. Se non specifichi un valore, il blob viene caricato nel bucket predefinito dell'applicazione. |