Un caso d'uso comune è rendere i file accessibili pubblicamente tramite il web. Puoi farlo nell'ambiente standard PHP 5 in uno dei seguenti modi:
- Pubblica i file in Google Cloud Storage da uno script: la tua app pubblica il file.
- Gestisci i file da Google Cloud Storage, che li gestisce direttamente.
- Gestione dei file caricati con l'app utilizzando il gestore statico in
app.yaml
.
Tieni presente che l'ultimo metodo non utilizza Cloud Storage.
Gestione dei file da uno script
Se vuoi pubblicare file dalla tua app, importa la classe App Engine
CloudStorageTools
:
Ora utilizza CloudStorageTools::serve per pubblicare il file da Google Cloud Storage:
La pubblicazione dei file dall'app in questo modo consente allo sviluppatore di determinare l'identità dell'utente e garantire che solo gli utenti autorizzati accedano al file. Lo svantaggio di questo approccio è che la tua applicazione deve eseguire questo codice per pubblicare il file, il che consuma ore di istanza e quindi comporta costi.
Pubblicazione di file direttamente da Google Cloud Storage
Esiste un modo più rapido ed economico per pubblicare i file rispetto alla pubblicazione
dall'app, come indicato sopra: pubblicarli direttamente da Cloud Storage tramite
HTTP. I file devono essere configurati in modo che siano leggibili dagli utenti anonimi al momento della scrittura. Come mostrato nello snippet di seguito, imposta l'opzione di stream acl
su public-read
.
Una volta scritto il file in Cloud Storage come pubblicamente leggibile, devi ottenere l'URL pubblico del file utilizzando CloudStorageTools::getPublicUrl.
Nell'esempio seguente, creiamo un file leggibile pubblicamente contenente alcuni numeri casuali, lo scriviamo in un bucket Cloud Storage e reindirizziamo a questo file da Cloud Storage.
Il limite di questo approccio è che non esiste alcun controllo su chi può accedere al file, perché è leggibile da chiunque.
Pubblicazione dei file caricati con la tua app
Questa opzione è descritta in dettaglio nella sezione Esiste un altro modo per leggere e scrivere file?.