Fornire l'accesso pubblico ai file

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 fornisce i file direttamente.
  • Puoi pubblicare i file caricati con la tua app usando il gestore statico in app.yaml.

Tieni presente che l'ultima metodologia non utilizza Cloud Storage.

Gestione dei file da uno script

Se vuoi pubblicare file dalla tua app, importa l'App Engine CloudStorageTools corso:

use google\appengine\api\cloud_storage\CloudStorageTools;

Ora utilizza CloudStorageTools::serve per pubblicare il file da Google Cloud Storage:

CloudStorageTools::serve("gs://${my_bucket}/serve.txt");

In questo modo, lo sviluppatore può determinare l'identità dell'utente e assicurarsi che solo gli utenti autorizzati accedano al file. Lo svantaggio di questo approccio è che l'applicazione deve eseguire questo codice per pubblicare il file, il che consuma ore di istanza e comporta quindi un costo.

Gestione dei file direttamente da Google Cloud Storage

Esiste un modo più rapido e conveniente 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 da essere leggibili da utenti anonimi sul file in scrittura. Come mostrato nello snippet di seguito, imposta l'opzione stream acl su public-read.

Una volta che il file è stato scritto in Cloud Storage come leggibile pubblicamente, devi ottenere l'URL pubblico del file, utilizzando CloudStorageTools::getPublicUrl.

Nel seguente esempio, creiamo un file leggibile da pubblico contenente alcune numeri casuali, scrivendoli in un bucket Cloud Storage e reindirizzare a il file da Cloud Storage.

$options = ['gs' => ['acl' => 'public-read']];
$context = stream_context_create($options);
$fileName = "gs://${my_bucket}/public_file.txt";
file_put_contents($fileName, $publicFileText, 0, $context);

$publicUrl = CloudStorageTools::getPublicUrl($fileName, false);

Il limite di questo approccio è che non è possibile controllare chi può accedere al file, poiché è leggibile da chiunque.

Pubblicazione dei file caricati con la tua app

Questa opzione è descritta in modo completo nella sezione Esistono altri modi per leggere e scrivere file.