ファイルを公開する

一般的には、ファイルをウェブ経由で公開します。App Engine PHP アプリでファイルを公開するには、次のいずれかの方法で行います。

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

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

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

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

use google\appengine\api\cloud_storage\CloudStorageTools;

CloudStorageTools::serve を使用して Google Cloud Storag からファイルを配信できるようになりました。

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 の App Engine スタンダード環境