使用 PHP 將圖檔上傳至 Microsoft Azure 雲端空間供圖檔應用, 有以下幾個步驟:
1. 建立 Azure 的 Storage Account , 並取得 key 與建立 container (也可以使用程式建立)
2. 安裝 Azure PHP Client: http://azure.microsoft.com/en-us/documentation/articles/storage-php-how-to-use-blobs/
2-1. 先安裝 Git
2-2. 依說明建立 composer.json 與下載 composer.phar (http://getcomposer.org/composer.phar), 並進行安裝: php composer.phar install
2-3. 完成程式下載
3. 在 php 程式碼中引入對應程式碼, 以上傳圖檔為例, 程式碼如下:
require_once 'vendor/autoload.php'; use WindowsAzure\Common\ServicesBuilder; use WindowsAzure\Common\ServiceException; use WindowsAzure\Blob\Models\CreateBlobOptions; $connectionString = "DefaultEndpointsProtocol=https;AccountName=[storage account name];AccountKey=[storage access key]"; $blobRestProxy = ServicesBuilder::getInstance()->createBlobService($connectionString); $content = fopen("myfile.jpg", "r"); $blob_name = "myfile.jpg"; $createBlobOptions = new CreateBlobOptions(); $createBlobOptions->setBlobContentType("image/jpeg"); try { //Upload blob $blobRestProxy->createBlockBlob("[container name]", $blob_name, $content, $createBlobOptions); echo "ok"; echo "<img src='http://[storage account name].blob.core.windows.net/[container name]/".$blob_name."' />"; } catch(ServiceException $e){ // Handle exception based on error codes and messages. // Error codes and messages are here: // http://msdn.microsoft.com/library/azure/dd179439.aspx $code = $e->getCode(); $error_message = $e->getMessage(); echo $code.": ".$error_message."<br />"; }
其中範例中的程式, 並沒有指定對應 blob 中的 Content-Type, 會使用預設的 application/octet-stream , 其實在網頁使用並無影響, 但若是直接連結會變成是下載的狀況, 比較不適合, 而且也應該是指定為正確的 Content-Type 較佳.
若有需要使用到 php 上傳圖檔至 Azure storage, 可以參考上面做法進行上傳應用.
相關資料:
Put Blob: https://msdn.microsoft.com/library/azure/dd179451.aspx
使用 ASP.NET 版本參考這篇:
http://blogs.msdn.com/b/ericsk/archive/2013/12/18/php-on-windows-azure-windows-azure-blob-storage.aspx