Menyediakan Akses Publik ke File

Kasus penggunaan yang umum adalah membuat file Anda dapat diakses secara publik melalui web. Anda dapat melakukan ini di lingkungan standar PHP 5 dengan salah satu cara berikut:

  • Sajikan file di Google Cloud Storage dari skrip: aplikasi Anda menyajikan file.
  • Sajikan file dari Google Cloud Storage, yang langsung menyajikan file.
  • Menyajikan file yang diupload dengan aplikasi Anda menggunakan pengendali statis di app.yaml.

Perlu diperhatikan bahwa metodologi terakhir tidak menggunakan Cloud Storage.

Manyajikan file dari skrip

Jika ingin menyajikan file dari aplikasi Anda, impor class CloudStorageTools App Engine:

use google\appengine\api\cloud_storage\CloudStorageTools;

Sekarang gunakan CloudStorageTools::serve untuk menyajikan file dari Google Cloud Storage:

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

Menyajikan file dari aplikasi dengan cara ini memungkinkan developer menentukan identitas pengguna dan memastikan bahwa hanya pengguna yang diizinkan yang mengakses file tersebut. Kelemahan dari pendekatan ini adalah aplikasi Anda perlu menjalankan kode ini untuk menyajikan file, yang menghabiskan jam kerja instance sehingga menimbulkan biaya.

Menyajikan file langsung dari Google Cloud Storage

Ada cara yang lebih cepat dan hemat biaya untuk menyajikan file daripada menyajikannya dari aplikasi, seperti yang disebutkan di atas: menyajikan file dari Cloud Storage langsung melalui HTTP. File harus dikonfigurasi agar dapat dibaca oleh pengguna anonim pada waktu penulisan file. Seperti yang akan kami tampilkan dalam cuplikan di bawah, Anda menetapkan opsi streaming acl ke public-read.

Setelah file ditulis ke Cloud Storage sebagai dapat dibaca oleh publik, Anda perlu mendapatkan URL publik untuk file tersebut, menggunakan CloudStorageTools::getPublicUrl.

Pada contoh berikut, kami membuat file yang dapat dibaca publik yang berisi beberapa angka acak, menulisnya ke bucket Cloud Storage, dan mengalihkannya ke file tersebut dari 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);

Keterbatasan pendekatan ini adalah tidak ada kontrol atas siapa yang dapat mengakses file, karena file dapat dibaca oleh siapa saja.

Menyajikan file yang diupload dengan aplikasi Anda

Opsi ini dijelaskan sepenuhnya di bagian Adakah cara lain untuk membaca dan menulis file.