爱程序网

SAE学习-使用SAE的Storage服务存储图片

来源: 阅读:

看到园子里面有同学写了一篇《基于PHP实现阿里云开放存储服务》,围观地址:http://www.cnblogs.com/nosqlcoco/p/3474773.html想起自己也在Sina App Engine(简称SAE)注册了一个开发者账号,而已有一个个人在线简历,所以就尝试这把应用里面用到的图片都放到SAE的Storage服务里面存储,然后在页面从storage里面读取图片地址,打开开发文档,就开始折腾起来。估计是PHP学习的不多,所以遇到的问题还是蛮多的。首先看一下SAE的storage服务内容:

image

阿里云的存储服务是现成的php sdk下载的,当前也有Java和C#的版本,而已只要里面填写了accessKeyId和accessKeySecret,可以不要自己的应用部署在阿里云的服务器上,或者它的平台上。所以方式和又拍云相关的图片存储相类似。但是SAE首先没有提供相关的SDK,就是说本地没有Storage的操作方法的源文件,因为这个原因,所以$mystorage=new SaeStorage写出的代码只能部署在SAE PaaS平台上。所以相对于阿里云来说,SAE的storage服务限制还是蛮多的。说到这里,就说一下另外一个MySQL服务,可以跨应用之间调用,但是不能由第三方程序直接调用,也是这个原因。这里可能是各大公司对于IaaS和PaaS定位不同,新浪估计是这样想的,我提供的就是PaaS服务,所以我当然希望你所有的应用和服务都在我的平台上开发,但是可以把各个服务分开计费呀!有的童鞋有云服务器,可能只想用一下你的Storage或者MySQL服务,你这样直接reject掉了人家。

 

参考的API文档地址是:http://apidoc.sinaapp.com/sae/SaeStorage.html。我在CustomImage.php里面封装了一个方法,本是想写一个CustomImage类,发现写出来错误好多,对PHP面向对象还是不熟悉。代码如下:

<?php//从SAE的汇总信息拿到这2个key//属性//方法function loadImagesByGroupName($directoryname) {        $accessKey = "your app's accessKey";    $secretKey = "your app's secretKey";    $sae_storage = new SaeStorage($accessKey, $secretKey);    $domainName = "projectimages";    $listfiles = $sae_storage->getListByPath($domainName, $directoryname);    $files = $listfiles["files"];    $imageUrls = array();    foreach ($files as $imagefile) {                $tempName=$directoryname ."/". $imagefile["Name"];        $imageUrl = $sae_storage->getUrl($domainName, $tempName);        array_push($imageUrls, $imageUrl);    }        return $imageUrls;} //测试方法//try {//   //    $result = loadImagesByGroupName("cokegame");//    print_r($result);//} catch (Exception $e) {//    echo "Error:" . $e->getMessage();//}?>

相关文章列表: