在GAE PHP网站上从Google云端商店提供文件 [英] Serving files from Google Cloud Store on a GAE PHP site

查看:138
本文介绍了在GAE PHP网站上从Google云端商店提供文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的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()是正确的方法,有几个原因


  1. 更高效 - 当您使用CloudStorageTools :: serve()时,该文件由App Engine基础架构提供服务,因此您不需要会发生读取实例中文件的成本。

  2. 您可以使用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

  1. 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.
  2. 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆