在 x86平台 , 檔案容量最大只有2^(32-1),相當於2G,超過以後,用一般方式會無法取得正確的容量

為了節省運算的時間,所以,會採用CURL,來進行資料的運算

function sizeCurl($files) {
  // curl solution - cross platform and really cool 🙂
  if (function_exists("curl_init")) {
    $ch = curl_init("file://" . $files);
    curl_setopt($ch, CURLOPT_NOBODY, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HEADER, true);
    $data = curl_exec($ch);
    curl_close($ch);
    if ($data !== false && preg_match('/Content-Length: (\d+)/',     $data, $matches)) {
        return (string) $matches[1];
    }
  } else {
    return false;
  }
}

以 CURL 取得檔案的Header,透過 Content-Length 來取得檔案的大小,這樣就完成了32bit環境下取得超過運算位元的檔案大小。

Leave a Comment