在GAE PHP网站上从Google云端商店提供文件 [英] Serving files from Google Cloud Store on a GAE PHP site
问题描述
我在我的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';
使用google\appengine\api\cloud_storage\CloudStorageTools;
$ bucket ='raven-bucket';
$ recording_name ='/1914-14-02-2014rec.ogg';
$ recording_data = CloudStorageTools :: serve('gs://'.$bucket.$recording_name,['content_type'=&'audio / ogg']);
这是迄今为止我所知道的,但我不确定 serve();
实际上正在返回。
更新2:
如何将此音频文件嵌入到HTML 5音频元素中或制作下载链接?这样做!
<音频控制>
< source src =test.phptype =audio / ogg>
< / audio>
test.php:
<?php
require_once'google / appengine / api / cloud_storage / CloudStorageTools.php';
使用google\appengine\api\cloud_storage\CloudStorageTools;
CloudStorageTools :: serve('gs://raven-bucket/194-14-02-2014rec.ogg',
['content_type'=&''audio / ogg']);
CloudStorageTools :: serve()是正确的方法,有几个原因
- 更高效 - 当您使用CloudStorageTools :: serve()时,该文件由App Engine基础架构提供服务,因此您不需要会发生读取实例中文件的成本。
- 您可以使用serve()返回任意大小的文件。使用file_get_contents()读取文件并回显,将文件限制为32MB或更少。
您可以看到正在使用的技术我们的博文用于生成 WordPress的动态站点地图 - 在创建请求处理程序标题下,代码基本上就是这样。
选项1。
如果您想要在文件'raven-bucket'中返回文件'194-14-02-2014rec.ogg'作为对请求的响应,那么您的php脚本
<?php
使用google\appengine\api\cloud_storage \CloudStorageTools;
CloudStorageTools :: serve('gs://raven-bucket/194-14-02-2014rec.ogg',
['content_type'=&''audio / ogg']);
选项2。
您希望用户下载'raven-bucket'文件夹中的'194-14-02-2014rec.ogg',以便将其保存在本地计算机上。
<?php
使用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']);
I have files in my Google Cloud store that I would like to serve embedded and for download on my site set up with GAE and PHP but I can't seem to get them to serve.
I've been looking at: https://developers.google.com/appengine/docs/php/refdocs/files/api.cloud_storage.CloudStorageTools#\google\appengine\api\cloud_storage\CloudStorageTools
The serve function doesn't seem to work for me, or likely I'm not employing it properly.
Should I not just go serve($gs_filename);
to grab the file? Any help would be appreciated! Thanks.
UPDATE:
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']);
This is what I've got so far, but I'm not sure what serve();
is actually returning. How would I go about embedding this audio file in an HTML 5 audio element or making a download link?
UPDATE 2: This works!
<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() is the right way to do this, for a few reasons
- It is more efficient - when you use CloudStorageTools::serve() the file is served by the App Engine infrastructure, so you do not occur the cost of reading the file in your instance.
- You can return files of any size using serve(). Reading the file using file_get_contents() and echoing that limits you to files of 32MB or less.
You can see the technique being used in our blogpost for generating dynamic sitemaps for WordPress - under the heading "Create a request handler", the code is essentially.
Option 1.
If you want to return the file '194-14-02-2014rec.ogg' in the bucket 'raven-bucket' as the response to a request then your php script looks like.
<?php
use google\appengine\api\cloud_storage\CloudStorageTools;
CloudStorageTools::serve('gs://raven-bucket/194-14-02-2014rec.ogg',
['content_type' => 'audio/ogg']);
Option 2.
You want the user to download the file '194-14-02-2014rec.ogg' in the bucket 'raven-bucket', so that it is saved on their local computer.
<?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']);
这篇关于在GAE PHP网站上从Google云端商店提供文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!