本文导入自一个特别古老的 WordPress 博客,内容可能会显得太年轻、太简单,不具有太大参考价值! 了解详情»
Google Storage是Google Lab里面的一个东东,为大家提供云存储服务。你存放在上面的东西都会丢到他们的云服务器上存着。以下是他们的介绍:
Google Storage(for 开发者)是一个用于存储和访问数据的服务。 这项服务结合了谷歌“云”的先进、安全、共享和可伸缩性。 特点包括:

快速,可扩展,高度可用的对象存储
  • 数据保存在美国各地
  • 读写一致
  • 支持数百G的数据请求
  • 域名和桶(类似虚拟磁盘之意)的结合
今天中午,我终于搞定了第四点,并拥有了属于自己的一个“云”数据存储域名 datastorage.laobubu.net

先搞定域名所有权问题

要让自己的某个域名变成云存储用,你得先让google知道这个域名是你的。

先把这个域名绑定到一个空间上,比如你的虚拟主机里面,待会儿要用来保存验证用的HTML文件。

然后,访问 https://www.google.com/webmasters/tools/home 并添加那个域名,你会见到“验证所有权”的页面,选择“将 HTML 文件上传到您的服务器”这种验证方法,下载验证用的那个html文件。下载好后别关那个页面。

把那个html文件上传到你之前绑定的空间里面,试试看可否访问,如果可以用类似 http://你的云存储网址/google_______.htm 这种地址访问了,那么回到验证所有权页面,点击“验证”,通过就OK。

去创建一个桶

访问 https://sandbox.google.com/storage/ 并创建一个桶,名字就是你的云存储的地址,比如 datastorage.laobubu.net

设置DNS

最后就是为域名设置DNS了。
  • 如果你可以管理DNS记录,那么进入管理页。
  • 如果没有的话去申请一个免费DNS服务(推荐 dns.he.net,鄙视DNSPod),然后修改域名的DNS为那个DNS服务提供的地址(如 ns1.he.net 、 ns2.he.net等)。
在管理页上添加一个新的CNAME记录,记录的名字就是你的地址(例子前面有),数据就是 c.commondatastorage.googleapis.com

比如我的就是添加了一个这种DNS记录:
datastorage.laobubu.net.	CNAME	c.commondatastorage.googleapis.com.

结束

进入你的那个桶的文件管理页面(在https://sandbox.google.com/storage/里),把第一步中的验证用html文件上传进去,上传完成后将右侧那个灰色的钩钩点成绿的。

这么做是因为google不知道会在什么时候再来自动玩一次域名所有权验证,如果他验证的时候不能读取到那个验证用html,后果……恐怕不会好。
至此,绑定活动结束了。

.

.

用php读写数据

这个我们恐怕没有那么大的闲情去看大篇大篇的鸟语编程说明,我们需要的是一个方便的途径来完成那些操作。

首先,要有一个读写的令牌,这个好搞,去这个地方拿: https://sandbox.google.com/storage/m/

然后我们还需要现成的代码处理那些网络操作……

万能的twitter上有一个好东西: https://github.com/dragonmantank/tws_service_google_storage/blob/master/Tws/Service/Google/Storage.php

这是一个php源代码,包含一个叫做Tws_Service_Google_Storage的类。通过它就可以玩数据了。

下载下来Storage.php,新建一个php文件,两者放一起。 在新建的文件里面写代码……
<?php
include('Storage.php');
$b = new Tws_Service_Google_Storage('你的令牌','你的令牌密匙');
//接下来的话可以开始玩了
?> 
玩法很多了,比如下面这些简单玩法:
上传文件到一个桶中 $b->putFile('文件路径','桶名字/上传后的文件名');

[备注]默认上传后你还得去google的后台勾上那个灰色的小钩钩,其他人才可以方便地用网址获取文件。你可以这样搞定这个问题:
$b->putFile('文件路径','桶名字/上传后的文件名',
array('acl'=>Tws_Service_Google_Storage::ACL_PUBLIC_READ)
);
获取桶名字列表
$l = $b->getBuckets();
foreach ($l as $item=>$detail) {
echo $item;
echo '
'; }
获取桶内物件列表
$l = $b->getObjectsByBucket('桶的名字');
foreach ($l as $item=>$detail) {
echo $item;
echo '
'; }
删除东西
$l = $b->removeObject('桶名字/文件名');