1. 程式人生 > >php使用新浪雲Storage儲存上傳下載檔案,建立bucket、Bucket 操作、Object 上傳操作,Object 下載操作,Object 刪除操作、Object 複製操作,生成一個外網能夠訪

php使用新浪雲Storage儲存上傳下載檔案,建立bucket、Bucket 操作、Object 上傳操作,Object 下載操作,Object 刪除操作、Object 複製操作,生成一個外網能夠訪

<?php
//新浪雲 Storage PHP use
use sinacloud\sae\Storage as Storage;

// 方法一:在新浪雲執行環境中時可以不傳認證資訊,預設會從應用的環境變數中取
$s = new Storage();

//**Bucket 操作**
// 建立一個 Bucket test
$s->putBucket("test");

// 獲取 Bucket 列表
print_r($s->listBuckets());

// 獲取 Bucket 列表及 Bucket 中 Object 數量和 Bucket 的大小
print_r($s->listBuckets(true));

// 獲取 test 這個 Bucket 中的 Object 物件列表,預設返回前 1000 個,如果需要返回大於 1000 個 Object 的列表,可以通過 limit 引數來指定。
print_r($s->getBucket("test"));

// 獲取 test 這個 Bucket 中所有以 a/ 為字首的 Objects 列表
print_r($s->getBucket("test", 'a/'));

// 獲取 test 這個 Bucket 中所有以 a/ 為字首的 Objects 列表,只顯示 a/N 這個 Object 之後的列表(不包含 a/N 這個 Object)。
$s->getBucket("test", 'a/', 'a/N');

// Storage 也可以當成一個偽檔案系統來使用,比如獲取 a/ 目錄下的 Object(不顯示其下的子目錄的具體 Object 名稱,只顯示目錄名)
$s->getBucket("test", 'a/', null, 10000, '/');

// 刪除一個空的 Bucket test
$s->deleteBucket("test");

// 獲取 Bucket 列表
print_r($s->listBuckets());


/**Object 上傳操作**/

// 把 $_FILES 全域性變數中的快取檔案上傳到 test 這個 Bucket,設定此 Object 名為 1.txt
$s->putObjectFile($_FILES['uploaded']['tmp_name'], "test", "1.txt");

// 把 $_FILES 全域性變數中的快取檔案上傳到 test 這個 Bucket,設定此 Object 名為 sae/1.txt
$s->putObjectFile($_FILES['uploaded']['tmp_name'], "test", "sae/1.txt");

// 上傳一個字串到 test 這個 Bucket 中,設定此 Object 名為 string.txt,並且設定其 Content-type
$s->putObject("This is string.", "test", "string.txt", array(), array('Content-Type' => 'text/plain'));

 // 上傳一個檔案控制代碼(必須是 buffer 或者一個檔案,檔案會被自動 fclose 掉)到 test 這個 Bucket 中,設定此 Object 名為 file.txt
 $s->putObject(Storage::inputResource(fopen($_FILES['uploaded']['tmp_name'], 'rb'), filesize($_FILES['uploaded']['tmp_name']), "test", "file.txt", Storage::ACL_PUBLIC_READ);
 

/**Object 下載操作**/

// 從 test 這個 Bucket 讀取 Object 1.txt,輸出為此次請求的詳細資訊,包括狀態碼和 1.txt 的內容等
var_dump($s->getObject("test", "1.txt"));

// 從 test 這個 Bucket 讀取 Object 1.txt,把 1.txt 的內容儲存在 SAE_TMP_PATH 變數指定的 TmpFS 中,savefile.txt 為儲存的檔名;
//SAE_TMP_PATH 路徑具有寫許可權,使用者可以往這個目錄下寫檔案,
//但檔案的生存週期等同於 PHP 請求,也就是當該 PHP 請求完成執行時,所有寫入 SAE_TMP_PATH 的檔案都會被銷燬
$s->getObject("test", "1.txt", SAE_TMP_PATH ."savefile.txt");

// 從 test 這個 Bucket 讀取 Object 1.txt,把 1.txt 的內容儲存在開啟的檔案控制代碼中/$s->getObject("test", "1.txt", fopen(SAE_TMP_PATH."savefile.txt", 'wb'));


/**Object 刪除操作**/

// 從 test 這個 Bucket 刪除 Object 1.txt
$s->deleteObject("test", "1.txt");


/**Object 複製操作**/

// 把 test 這個 Bucket 的 Object 1.txt 內容複製到 newtest 這個 Bucket 的 Object 1.txt
$s->copyObject("test", "1.txt", "newtest", "1.txt");

// 把 test 這個 Bucket 的 Object 1.txt 內容複製到 newtest 這個 Bucket 的 Object 1.txt,並設定 Object 的瀏覽器快取過期時間為 10s 和 Content-Type 為 text/plain
$s->copyObject("test", "1.txt", "newtest", "1.txt", array('expires' => '10s'), array('Content-Type' => 'text/plain'));


/**生成一個外網能夠訪問的 url**/

// 為私有 Bucket test 中的 Object 1.txt 生成一個能夠在外網用 GET 方法臨時訪問的 URL,次 URL 過期時間為 600s
$s->getTempUrl("test", "1.txt", "GET", 600);

// 為 test 這個 Bucket 中的 Object 1.txt 生成一個能用 CDN 訪問的 URL
$s->getCdnUrl("test", "1.txt");


/**除錯模式**/

// 開啟除錯模式,出問題的時候方便定位問題,設定為 true 後遇到錯誤的時候會丟擲異常而不是寫一條 warning 資訊到日誌。
$s->setExceptions(true);

?>

use sinacloud\sae\Storage as Storage