ファイルを公開する

一般的なユースケースとして、ファイルをウェブで一般公開する場合があります。PHP 5 スタンダード環境でこれを行うには、次のいずれかの方法を使用します。

  • Google Cloud Storage のファイルをスクリプトで提供する: アプリからファイルが提供されます。
  • Google Cloud Storage でファイルを提供する: Cloud Storage から直接ファイルが提供されます。
  • app.yaml で静的ハンドラを使用して、アプリでアップロードしたファイルを提供する。

最後の方法では、Cloud Storage を使用しないことに注意してください。

スクリプトからファイルを提供

アプリからファイルを提供する場合は、App Engine の CloudStorageTools クラスをインポートします。

use google\appengine\api\cloud_storage\CloudStorageTools;

現在は、CloudStorageTools::serve を使用して、Google Cloud Storage からファイルを提供できるようになりました。

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

この方法でアプリからファイルを提供することで、デベロッパーがユーザー ID を判断し、許可されたユーザーだけがファイルにアクセスできるようになります。このアプローチの欠点は、ファイルを提供するためにアプリケーションでこのコードを実行する必要があり、インスタンス時間を消費するため、コストがかさむことです。

Google Cloud Storage から直接ファイルを提供

上記のように、アプリから提供するよりも、ファイルを直接提供する方が時間がかからず、低コストですみます。HTTP 経由で Cloud Storage から直接提供できます。ファイルの書き込み時に匿名ユーザーがファイルを読み取れるように構成する必要があります。以下のスニペットに示すように、acl ストリーム オプションを public-read に設定します。

ファイルが公開設定で Cloud Storage に書き込まれたら、CloudStorageTools::getPublicUrl を使用して、ファイルの公開 URL を取得する必要があります。

次の例では、乱数が含まれる公開設定のファイルを作成し、Cloud Storage バケットに書き込み、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);

ただし、このアプローチでは誰でもファイルを読み取ることができるため、誰がファイルにアクセスできるかを制御できないという制約があります。

アプリでアップロードされたファイルの提供

このオプションの詳細については、ファイルを読み書きするその他の方法をご覧ください。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

PHP 5 の App Engine スタンダード環境