2011年2月10日 星期四

[野人獻曝] 用 Amazon S3 儲放你的檔案

Amazon S3是一個由Amazon所提供的檔案儲存服務,
基本上也出來很久了,
所以這裡我不會也不想介紹太多細節!
如果你對這有興趣的話,可以先註冊AWS帳號後再繼續看下去。
(不過這需要信用卡,換言之,是要收費的,所以......沒信用卡的就掰掰了)
那麼以下我就以PHP來略為說明怎麼實作一個簡單的上傳程式吧。
首先,你可以先到這裡下載Amazon S3 PHP Class,
下載解壓縮至網站目錄後(請記住你把檔案放在那個目錄),
打開你的程式編輯器,
先輸入以下的HTML吧:
這段HTML主要是為了讓我們建立一個可供上傳檔案的表單,
如果不熟悉的話,建議還是找本HTML的入門書吧,
所以這裡就簡單帶過了。
接下來是後端程式的部份,
為了方便起見,你可以直接寫同一隻程式中
...
if (isset($_FILES['photo'])) {   
require 'S3.php'; // 基本上路徑就請你自己去處理啦!為了要操作S3你必需要引入這個檔案   
// AWS_ACCESSKEY和AWS_SECRETKEY是你的AWS登入金鑰(?),你可以在AWS帳號中心中看到這些資訊   S3::setAuth(AWS_ACCESSKEY, AWS_SECRETKEY);     
// 新增檔案籃,基本上你可以把他當成一個裝滿檔案的藍子,到時要取用這個籃子內的檔案可以用 http://my-test.s3.amazonaws.com/{檔案路徑}來存取   
// 第二個參數代表是這個檔案籃可被公開讀取   
S3::putBucket("my-test", S3::ACL_PUBLIC_READ);      // 將檔案傳至my-test這個檔案籃中   S3::putObjectFile($_FILES['photo']['name'], "my-test", $_FILES['name'], S3::ACL_PUBLIC_READ); 
} 
...
這是比較粗略(而且還有一堆錯)的程式碼,
但總的來說,
整個流程不外乎就是:
  • 伺服端接收客戶端所傳來的檔案內容
  • 接收後進行處理(可能是將檔名記到資料庫之類的)
  • 登入Amazon S3
  • 開啟檔案籃
  • 丟檔案過去
因此在實作時,
請務必記住這個流程。
那麼本日的超簡略教學就到此結束了。
張貼留言