关于SAE Storage接口

已经封装了和SAE操作类似的接口,demo见以上Github,操作手册见 http://apidoc.sinaapp.com那么在提交的代码中我也给出了一段demo,那个这个demo就演示了如何在你自己的服务器上使用SAE提供的云存储服务。使用此接口可以抛开storage对于SAE runtime的依赖,使我们可以在自己的web服务器上通过storage的rest api接口来操作我们存储在storage中的文件包括创建、管理、删除 domain(在这里成为container),创建、管理、删除 domain中的文件(这里称为object)。

代码下载地址

https://github.com/xiaosier/php-saestorage

获取domain列表和信息

<?php
require_once('saestorage.php');
$auth = new CF_Authentication('k5nmzy5445', 'lzxkxy0x2iyili3k113iiw1mz5kimlwk33j5wyl1', NULL, "https://auth.sinas3.com");
$auth->authenticate();
$conn = new CF_Connection($auth);
//info
$info = $conn->get_containers();;
var_dump($info);

通过如上的这一段代码我们可以获取到我们创建的container的列表。以上代码的执行结果为:

可以看到,显然接口是调用成功了。当然这里面的属性值很多很多,那么我们关心的只有几项,例如

    ["name"]=>
    string(4) "lazy"
    ["object_count"]=>
    int(14)
    ["bytes_used"]=>
    int(31929662)

其中name表示domain的名字,object_count表示container里面的文件数目。bytes_used表示这个domain占用的空间的大小。

上传文件

一个使用write方法写入到storage的代码demo

<?php
require_once('saestorage.php');
$auth = new CF_Authentication('k5nmzy5445', 'lzxkxy0x2iyili3k113iiw1mz5kimlwk33j5wyl1', NULL, "https://auth.sinas3.com");
$auth->authenticate();
$conn = new CF_Connection($auth);
$txt = $conn->get_container('lazy');
$bday = $txt->create_object("first_test.txt");
$bday->__set_content_type('text/plain');
$re = $bday->write('This is just frist test');

那么运行以上代码,我们到SAE的storage管理面板中就可以看到我们刚创建的first_test.txt了,如图

从文件上传

如果我们想走文件上传文件到storage中,我们可以使用 load_from_filename 这个函数,一个使用的例子:

<?php
require_once('saestorage.php');
$auth = new CF_Authentication('k5nmzy5445', 'lzxkxy0x2iyili3k113iiw1mz5kimlwk33j5wyl1', NULL, "https://auth.sinas3.com");
$auth->authenticate();
$conn = new CF_Connection($auth);
$file = $conn->get_container('lazy');
$doc = $file->get_object("first_test.txt");
$doc->load_from_filename('./README');

我们从本地的README上传覆盖掉上面创建的first_test.txt,我们本地的内容是

[root@vm12080024 storage_api]# cat README
SJWJSMOWKSMPW,SW,

我们通过storage的管理面板访问文件的内容就可以知道已经成功了:

删除文件

代码如下:

<?php
require_once('saestorage.php');
$auth = new CF_Authentication('k5nmzy5445', 'lzxkxy0x2iyili3k113iiw1mz5kimlwk33j5wyl1', NULL, "https://auth.sinas3.com");
$auth->authenticate();
$conn = new CF_Connection($auth);
$file = $conn->get_container('lazy');
$doc = $file->delete_object("first_test.txt");

执行以上代码,就会发现文件删除成功了。

获取文件的url

<?php
require_once('saestorage.php');
$auth = new CF_Authentication('k5nmzy5445', 'lzxkxy0x2iyili3k113iiw1mz5kimlwk33j5wyl1', NULL, "https://auth.sinas3.com");
$auth->authenticate();
$conn = new CF_Connection($auth);
$file = $conn->get_container('lazy');
$doc = $file->get_object("remote_file.txt");
var_dump($doc->get_temp_url());

运行以上代码就可以得到文件的storage地址为 https://api.sinas3.com/v1/SAE_lazydemo/lazy/remote_file.txt 在这里我也封装了一个新的函数sae_public_uri()

require_once('saestorage.php');
$auth = new CF_Authentication('k5nmzy5445', 'lzxkxy0x2iyili3k113iiw1mz5kimlwk33j5wyl1', NULL, "https://auth.sinas3.com");
$auth->authenticate();
$conn = new CF_Connection($auth);
$file = $conn->get_container('lazy');
$doc = $file->get_object("remote_file.txt");
var_dump($doc->sae_public_uri());

运行可以得到和我们的管理中心一样的地址:http://lazydemo-lazy.stor.sinaapp.com/remote_file.txt