ID regione
REGION_ID
è un codice abbreviato assegnato da Google in base alla regione selezionata al momento della creazione dell'app. Non corrisponde a un paese o a una provincia, anche se alcuni ID regione possono apparire simili ai codici di paese e provincia 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 un caricamento direttamente in Google Cloud Storage, invii un POST HTTP in un URL specifico, come descritto a breve. App Engine utilizza quindi uno specifico servizio di caricamento per gestire il post e scrivere il file in Google Cloud Storage. Al termine della scrittura del file, App Engine informa l'app che il caricamento è completato. Poiché la tua app viene richiamata solo al completamento, puoi utilizzare questo metodo per caricare file di grandi dimensioni, fino al massimo attuale di 100 terabyte.
Il caricamento dei file da parte degli utenti direttamente in Google Cloud Storage è più rapido ed economico rispetto alla scrittura in Google Cloud Storage dalla tua app App Engine, perché consuma ore di istanza e comporta costi. Inoltre, la scrittura del file non avviene all'interno di una richiesta all'applicazione. Pertanto, è esente dal timeout della richiesta che verrebbe altrimenti applicato e consente il caricamento di file di dimensioni molto grandi.
Implementazione dei caricamenti di file
Per implementare il caricamento di file utente:
Importa
CloudStorageTools
:Crea l'URL di caricamento specifico per l'applicazione, utilizzando il metodo CloudStorageTools::createUploadUrl() nel file
.php
, come segue:Vedi le opzioni di
createUploadUrl
per i dettagli sulle opzioni disponibili. 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: viene 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 sul percorso specificato come primo
parametro per createUploadUrl
; nell'esempio precedente, questo è
/upload_handler.php
. Il runtime PHP forma il superglobale $_FILES
corretto
e tmp_filename
si riferisce al nome file del file appena caricato in Google Cloud Storage.
Ad esempio, supponiamo che il contenuto di upload_handler.php sia il seguente:
var_dump($_FILES);
Il caricamento di un file denominato hello.txt
potrebbe generare 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 dello stream gs://
. Utilizzi move_uploaded_file
come faresti normalmente per qualsiasi altro file caricato, ad esempio:
Opzioni per createUploadUrl
Le opzioni createUploadUrl
valide sono mostrate nella seguente tabella:
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 . Le dimensioni totali di tutti i BLOB caricati. |
gs_bucket_name |
Stringa. Il nome di un bucket Google Cloud Storage in cui devono essere caricati i BLOB. Se non specifichi un valore, il blob viene caricato nel bucket predefinito dell'applicazione. |