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(); //}
?>

 

 

說明一下代碼邏輯,array getListByPath (string $domain, [string $path = NULL], [int $limit = 100], [int $offset = 0], [int $fold =true]) 獲取指定Domain、指定目錄下的文件列表,我在后台創建了多個目錄,然后每個目錄上傳了相應的圖片,獲得的數組里面,我可以拿到文件的名詞,然后我調用string getUrl (string $domain, string $filename) 方法,獲取到對應圖片的url地址,這個URL地址就是從Storage存儲里面生成出來的地址,不是從我應用程序部署的地方獲取的。比如:http://liminjun-projectimages.stor.sinaapp.com/avatar/my.png

我在頁面呈現的代碼如下,就是根據目錄,然后顯示目錄下所有的圖片的。當然大家在最開始要控制好,一個目錄最多放置多少張圖片,要不然性能會有所下降。代碼如下:

 

require_once 'CustomImage.php'; <ul class="itemImageList">
                    <?php $imagesUrls=loadImagesByGroupName("cokegame"); //使用for對數組進行循環
                    
                    for($i=0;$i<count($imagesUrls);$i++) { ?>
                        <li>
                            <a href="javascript:void(0);" rel=""><img src=<?php echo $imagesUrls[$i] ?> alt="Coke Gaming Zone Preview Image"></a>
                        </li>
                    <?php } ?>
                <div class="clearfix"></div>
            </ul>

 

 
         

在一般情況,有PHP使用經驗,然后查看相關的API文檔還是可以完成一些簡單應用需求。在這里大家也了解到阿里雲的開放存儲服務和SAE的Storage服務的差別,大家在個人項目或者企業項目時,可以綜合考慮,選擇最適合自己的解決方案。大家可以圍觀我的應用線上地址:http://liminjun.sinaapp.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM