本文將示範如何使用百度開放雲 PHP SDK 實現百度雲盤檔案的批量下載功能,提供完整可執行的程式碼範例供開發者參考。
首先需要下載百度開放雲 PHP SDK,下載地址:百度開發者中心
<?php
/**
* 批量下載百度雲盤檔案
* Author: hankcs
* Date: 2014-03-29
*/
ini_set("max_execution_time", 36000);
require_once '../bcs.class.php';
require_once '../krumo/class.krumo.php';
$host = 'bcs.duapp.com';
$ak = '你的公鑰'; // 請替換為實際的 Access Key
$sk = '你的私鑰'; // 請替換為實際的 Secret Key
$bucket = '要下載的bucket名稱'; // 請替換為目標 Bucket 名稱
$baidu_bcs = new BaiduBCS($ak, $sk, $host);
// 獲取物件列表(每次最多 1024 個)
$response = json_decode($baidu_bcs->list_object($bucket, array(
'start' => 0,
'limit' => 1024,
))->body);
$downloaded_size = 0;
while ($downloaded_size < $response->object_total) {
krumo($response); // 除錯輸出
// 遍歷下載每個檔案
foreach ($response->object_list as $object) {
if (!$object->is_dir) {
mk_dir('.'.$object->parent_dir);
$result = $baidu_bcs->get_object($bucket, $object->object, array(
"fileWriteTo" => '.'.$object->object
));
}
}
$downloaded_size += count($response->object_list);
// 獲取下一批資料
$response = json_decode($baidu_bcs->list_object($bucket, array(
'start' => $downloaded_size,
'limit' => 1024,
))->body);
}
/**
* 遞迴建立目錄
*/
function mk_dir($dir, $mode = 0755) {
if (is_dir($dir) || @mkdir($dir, $mode)) return true;
if (!mk_dir(dirname($dir), $mode)) return false;
return @mkdir($dir, $mode);
}
start 和 limit 參數分批獲取檔案列表,避免一次載入過多資料導致記憶體溢出mk_dir() 遞迴函數重建雲端的目錄結構ini_set("max_execution_time", 36000) 防止大量檔案下載時超時if(!$object->is_dir) 只下載檔案,略過目錄實際使用前請務必替換 $ak、$sk 和 $bucket 為您的真實認證資訊。建議在測試環境先驗證功能後再部署至生產環境。