Öffentlichen Zugriff auf Dateien bereitstellen

Dateien sollen sehr oft über das Internet öffentlich zugänglich gemacht werden. In der PHP 5-Standardumgebung haben Sie dazu folgende Möglichkeiten:

  • Sie stellen die Dateien in Google Cloud Storage über ein Skript bereit, d. h., die jeweilige Datei wird von der Anwendung bereitgestellt
  • Sie stellen die Dateien direkt aus Google Cloud Storage bereit
  • Die mit Ihrer Anwendung hochgeladenen Dateien werden mithilfe des statischen Handlers in app.yaml bereitgestellt.

Beachten Sie, dass bei der letzten Methode Cloud Storage nicht verwendet wird.

Dateien über ein Skript bereitstellen

Wenn Sie Dateien aus Ihrer Anwendung bereitstellen möchten, importieren Sie die App Engine-Klasse CloudStorageTools:

use google\appengine\api\cloud_storage\CloudStorageTools;

Stellen Sie dann mit CloudStorageTools::serve die Datei aus Google Cloud Storage bereit:

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

Wenn Sie auf diese Weise Dateien aus der Anwendung bereitstellen, kann der Entwickler die Nutzeridentität ermitteln und dafür sorgen, dass nur autorisierte Nutzer auf die Datei zugreifen. Der Nachteil dieses Vorgehens besteht darin, dass Ihre Anwendung für die Bereitstellung der Datei diesen Code ausführen muss. Dies erfordert Instanzstunden und verursacht somit Kosten.

Dateien direkt aus Google Cloud Storage bereitstellen

Es gibt eine schnellere und kostengünstigere Methode zur Bereitstellung von Dateien als die Bereitstellung über die Anwendung, wie oben beschrieben: die Bereitstellung aus Cloud Storage direkt über HTTP. Die Dateien müssen dazu so konfiguriert sein, dass sie von anonymen Nutzern zum Zeitpunkt des Schreibens der Datei gelesen werden können. Wie unten im Snippet gezeigt, legen Sie dazu für die Stream-Option acl auf den public-read-Wert fest.

Nachdem die Datei als öffentlich lesbar in Cloud Storage geschrieben wurde, müssen Sie die öffentliche URL für die Datei mithilfe von CloudStorageTools::getPublicUrl abrufen.

Im folgenden Beispiel wird eine öffentlich lesbare Datei mit Zufallszahlen erstellt, die in einen Cloud Storage-Bucket geschrieben und aus Cloud Storage zu dieser Datei umgeleitet werden.

$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);

Der Nachteil dieses Vorgehens besteht darin, dass es keine Kontrolle gibt, wer auf die Datei zugreifen kann, da die Datei für jeden lesbar ist.

Mit der Anwendung hochgeladene Dateien bereitstellen

Diese Möglichkeit wird ausführlich unter Gibt es noch andere Möglichkeiten, Dateien zu lesen und zu schreiben? erläutert.