Обслуживание файлов из Google Cloud Store на сайте GAE PHP

У меня есть файлы в моем магазине Google Cloud, которые я хотел бы использовать встроенными и для загрузки на моем сайте, настроенными с помощью GAE и PHP, но я не могу заставить их их обслуживать.

Я просматривал: https://developers.google.com/appengine/docs/php/refdocs/files/api.cloud_storage.CloudStorageTools# \ google \ appengine \ api \ cloud_storage \ CloudStorageTools

Функция подачи не работает для меня, или, вероятно, я не использую ее должным образом.

Должен ли я не просто пойти serve($gs_filename); захватить файл? Любая помощь будет оценена! Благодарю.

ОБНОВИТЬ:

 require_once 'google/appengine/api/cloud_storage/CloudStorageTools.php'; use google\appengine\api\cloud_storage\CloudStorageTools; $bucket = 'raven-bucket'; $recording_name = '/194-14-02-2014rec.ogg'; $recording_data = CloudStorageTools::serve('gs://'.$bucket.$recording_name, ['content_type' => 'audio/ogg']); 

Это то, что у меня есть до сих пор, но я не уверен, что serve(); фактически возвращается. Как я могу вставить этот аудиофайл в аудио-элемент HTML 5 или сделать ссылку для скачивания?

ОБНОВЛЕНИЕ 2: Это работает!

 <audio controls> <source src="test.php" type="audio/ogg"> </audio> 

test.php:

 <?php require_once 'google/appengine/api/cloud_storage/CloudStorageTools.php'; use google\appengine\api\cloud_storage\CloudStorageTools; CloudStorageTools::serve('gs://raven-bucket/194-14-02-2014rec.ogg', ['content_type' => 'audio/ogg']); 

CloudStorageTools :: serve () – это правильный способ сделать это по нескольким причинам

  1. Это более эффективно – когда вы используете CloudStorageTools :: serve (), файл обслуживается инфраструктурой App Engine, поэтому вы не получаете расходов на чтение файла в вашем экземпляре.
  2. Вы можете возвращать файлы любого размера с помощью serve (). Чтение файла с помощью file_get_contents () и повторение этого вопроса ограничивает файлы размером 32 МБ или меньше.

Вы можете увидеть технику, используемую в нашем blogpost для создания динамических sitemaps для WordPress – под заголовком «Создать обработчик запроса», код по существу.

Опция 1.

Если вы хотите вернуть файл «194-14-02-2014rec.ogg» в ведро «raven-bucket» в качестве ответа на запрос, то выглядит ваш php-скрипт.

 <?php use google\appengine\api\cloud_storage\CloudStorageTools; CloudStorageTools::serve('gs://raven-bucket/194-14-02-2014rec.ogg', ['content_type' => 'audio/ogg']); 

Вариант 2.

Вы хотите, чтобы пользователь загрузил файл «194-14-02-2014rec.ogg» в ведро «воронье ведро», чтобы он был сохранен на локальном компьютере.

 <?php use google\appengine\api\cloud_storage\CloudStorageTools; CloudStorageTools::serve('gs://raven-bucket/194-14-02-2014rec.ogg', ['save_as' => '194-14-02-2014rec.ogg', 'content_type' => 'audio/ogg']); 

Вы можете получить доступ к файлам, хранящимся в облачных хранилищах, изначально, без использования CloudStorageTools.

Вам необходимо:

  1. Добавление разрешений в ведро / файлы для учетной записи службы приложений App Engine, например, your-app@appspot.gserviceaccount.com
  2. Создайте файл php.ini и установите директиву google_app_engine.allow_include_gs_buckets, в которой указываются ведра, к которым вы хотите получить доступ (см. https://developers.google.com/appengine/docs/php/config/php_ini#GAE_directives ).

  3. наконец, вы можете просто:

Включают:

 <? include("gs://your-bucket/file.php"); ?> 

Или прочитайте содержимое файлов:

 <? $content = file_get_contents("gs://your-bucket/file.txt"); ?>