Dateien lesen und schreiben

In der PHP 5-Standardumgebung von Google App Engine ist das lokale Dateisystem, in dem Ihre Anwendung bereitgestellt wird, nicht beschreibbar. Dadurch werden die Sicherheit und Skalierbarkeit der Anwendung sichergestellt.

Wenn Ihre Anwendung jedoch Dateien zur Laufzeit schreiben und lesen soll, bietet die Standardumgebung von PHP 5 einen integrierten Google Cloud Storage-Stream-Wrapper, mit dem Sie viele Standardfunktionen des PHP-Dateisystems zum Lesen und Schreiben von Dateien verwenden können.

Es gibt zwei Möglichkeiten, Dateien in Google Cloud Storage zu schreiben:

  • Schreiben Sie Dateien aus einer Anwendung heraus:
    • Einfaches Schreiben von Dateien
    • Schreiben von Dateien via Stream
  • Erlauben Sie Nutzern das Hochladen von Dateien in Google Cloud Storage.

Dateien aus einer Anwendung heraus schreiben

Wenn Sie aus einer Anwendung heraus eine Datei schreiben, können Sie die gesamte Datei auf einmal schreiben oder die Datei per Stream schreiben.

Der App Engine-Stream-Wrapper für Cloud Storage ist in die Laufzeit eingebettet und wird verwendet, wenn Sie einen Dateinamen angeben, der mit gs:// beginnt. Der Wrapper benötigt den Namen des Buckets oder Dateiobjekts in folgendem Format:

gs://bucket_name/desired_object_name

Einfaches Schreiben von Dateien

Um Daten aus Ihrer Anwendung in Google Cloud Storage zu schreiben, verwenden Sie file_put_contents mit einer gültigen Cloudspeicher-URL. Beispiel:

file_put_contents("gs://${my_bucket}/hello.txt", $newFileContent);

Dabei gilt: my_bucket ist ein ordnungsgemäß konfigurierter Google Cloud Storage-Bucket.

Wenn Sie Streamoptionen verwenden möchten, um Berechtigungen, Caching und/oder Metadatenoptionen bereitzustellen, schreiben Sie die Datei so:

$options = ['gs' => ['Content-Type' => 'text/plain']];
$context = stream_context_create($options);
file_put_contents("gs://${my_bucket}/hello_options.txt", $newFileContent, 0, $context);

Schreiben von Dateien via Stream

Alternativ können Sie fopen/fwrite verwenden, um Daten via Streaming zu schreiben:

$fp = fopen("gs://${my_bucket}/hello_stream.txt", 'w');
fwrite($fp, $newFileContent);
fclose($fp);

Beachten Sie, dass die Daten beim Streaming in Form kleinerer Teilmengen an Google Cloud Storage gesendet werden. Sie müssen die Gesamtlänge der zu schreibenden Daten nicht im Voraus kennen, da sie berechnet wird, wenn die Dateiressource geschlossen wird:

Dies sind die grundlegenden Möglichkeiten zum Schreiben von Dateien. Informationen zu speziellen Anwendungsfällen und zur erweiterten Dateiverwaltung finden Sie im Abschnitt Weitere Informationen.

Dateien löschen

Zum Löschen einer Datei verwenden Sie die PHP-Funktion unlink().

Uploads durch Nutzer

Weitere Informationen zu dieser Option zum Schreiben von Dateien finden Sie unter Nutzern das Hochladen von Dateien erlauben.

Dateien lesen

Informationen zum Lesen von Dateien aus Google Cloud Storage finden Sie unter Öffentlichen Zugriff auf Dateien bereitstellen.

Einrichtung und Anforderungen

Sie müssen Google Cloud Storage aktivieren und einen Bucket erstellen. Weitere Informationen finden Sie unter "Einrichtung".

Unterstützte PHP 5-Dateisystemfunktionen

Viele der häufig verwendeten PHP 5-Dateifunktionen sowie Dateiinformations- und Verzeichnisfunktionen werden unterstützt. Eine vollständige Liste der unterstützten PHP-Funktionen finden Sie unter Unterstützung von PHP 5-Dateisystemfunktionen.

Von der Cloud Storage Tools API bereitgestellte erweiterte Funktionen

Mit dem Google Cloud Storage-Stream-Wrapper können Sie PHP-Dateisystemaufrufe verwenden. Sie benötigen jedoch möglicherweise noch einige der verfügbaren erweiterten Funktionen, um Google Cloud Storage optimal nutzen zu können. Diese erweiterten Funktionen werden in der Cloud Storage Tools API bereitgestellt:

Diese API bietet neben weiteren nützlichen Dienstprogrammen eine Reihe von Funktionen, mit denen das Bereitstellen von Dateien und Bildern unterstützt wird. Einige dieser Funktionen werden auf den Themenseiten behandelt, die im Abschnitt Weitere Informationen verlinkt sind.

Gibt es noch andere Möglichkeiten, Dateien zu lesen und zu schreiben?

PHP 5-Anwendungen von App Engine müssen den Cloud Storage-Stream-Wrapper verwenden, um Dateien zur Laufzeit zu schreiben. Wenn eine Anwendung jedoch Dateien lesen muss und diese Dateien statisch sind, können Sie diese statischen Dateien, die über Ihre Anwendung hochgeladenen wurden, optional mit PHP-Dateisystemfunktionen wie file_get_contents lesen.

Beispiel:

$fileContents = file_get_contents($filePath);

Dabei muss der angegebene Pfad relativ zu dem des Skripts sein, das auf die Dateien zugreift.

Wenn Sie die Anwendung in App Engine bereitstellen, müssen Sie die Dateien in ein Unterverzeichnis der Anwendung hochladen und die Datei app.yaml konfigurieren, damit die Anwendung auf diese Dateien zugreifen kann. Weitere Informationen finden Sie unter PHP 5-Anwendungskonfiguration mit app.yaml.

Wenn Sie eine statische Datei oder einen Verzeichnis-Handler (static_files oder static_dir) verwenden, müssen Sie in der Konfigurationsdatei app.yaml die Option application_readable auf "true" (wahr) setzen. Andernfalls kann Ihre Anwendung die Dateien nicht lesen. Wenn die Dateien jedoch von einem script-Handler bereitgestellt werden, ist dies nicht notwendig, da diese Dateien standardmäßig von Skript-Handlern gelesen werden können.

Weitere Informationen

Mehr Details zur Verwendung der Cloud Storage Tools API finden Sie auf den Seiten zu folgenden Themen: