PHP獲取文件大小及其應用

一、使用filesize函數獲取文件大小

filesize是PHP自帶的一個函數,可以獲取指定文件的大小。下面是一個使用filesize函數計算文件大小的示例代碼:

<?php
$file = 'example.txt';
$size = filesize($file);
echo "文件的大小為:" . $size . " 字節";
?>

執行上面的代碼,輸出的結果類似於:

文件的大小為:1024 字節

其中,$file為要獲取大小的文件路徑,$size為獲取到的文件大小(以字節為單位)。

此外,由於filesize函數返回的是一個長整型數值,故在計算文件大小時需要注意單位轉換,如將文件大小從字節轉換為KB、MB等。

二、以人類可讀的方式顯示文件大小

我們通常會將文件大小轉換為人類可讀的格式,例如:1.5 MB3.2 GB等。以下是一個示例代碼,可以將文件大小轉換為KB、MB、GB等易於閱讀的格式。

<?php
function formatSizeUnits($bytes)
{
    if ($bytes >= 1073741824) {
        $bytes = number_format($bytes / 1073741824, 2) . ' GB';
    } elseif ($bytes >= 1048576) {
        $bytes = number_format($bytes / 1048576, 2) . ' MB';
    } elseif ($bytes >= 1024) {
        $bytes = number_format($bytes / 1024, 2) . ' KB';
    } elseif ($bytes > 1) {
        $bytes = $bytes . ' bytes';
    } elseif ($bytes == 1) {
        $bytes = $bytes . ' byte';
    } else {
        $bytes = '0 bytes';
    }
    return $bytes;
}

// 獲取文件大小並以易於閱讀的方式顯示出來
$file = 'example.txt';
$size = filesize($file);
echo "文件的大小為:" . formatSizeUnits($size);
?>

上述代碼中的formatSizeUnits函數可以將文件大小由字節格式轉換成易於閱讀的格式(KB、MB、GB等)。此函數的輸入參數為文件大小(以字節為單位),返回值為轉換後的文件大小字符串。

運行上述代碼,會以以下格式輸出文件大小:

文件的大小為:1.00 KB

三、限制上傳文件的大小

在使用PHP上傳文件時,經常需要限制上傳文件的大小。PHP可以通過檢查上傳文件的大小進行限制。以下是一個示例代碼實現上傳文件大小限制的方法。

<?php
// 允許上傳文件的最大大小(以字節為單位)
$max_file_size = 1048576; //1MB

if ($_FILES['file']['error'] == UPLOAD_ERR_OK
    && $_FILES['file']['size']  $max_file_size) {
        echo "文件大小超過限制!";
    }
    if ($_FILES['file']['error'] != UPLOAD_ERR_OK) {
        echo "文件上傳失敗!";
    }
}
?>

上述代碼中,$max_file_size為允許上傳文件的最大大小(以字節為單位),$_FILES['file']為上傳文件的信息(包括文件大小等信息)。首先需要判斷上傳文件是否存在,並且大小是否在允許範圍內,然後再執行相應的上傳操作或返回錯誤信息。

四、計算整個目錄的大小

有時候,我們需要計算整個目錄的大小,以便於給用戶展示展示文件存儲空間的使用情況。以下是一個示例代碼,可以計算整個目錄的大小。

<?php
function folderSize($dir)
{
    $total_size = 0;
    $files = scandir($dir);
    foreach ($files as $file) {
        if ($file === '.' || $file === '..') continue;
        $path = $dir . '/' . $file;
        if (is_file($path)) {
            $total_size += filesize($path);
        } else if (is_dir($path)) {
            $total_size += folderSize($path);
        }
    }
    return $total_size;
}

// 計算整個目錄的大小
$dir = 'uploads';
$size = formatSizeUnits(folderSize($dir));
echo "目錄的大小為:" . $size;
?>

上述代碼中的folderSize函數會遞歸遍歷目錄$dir下所有子目錄和子文件,然後累加所有文件的大小,並返回目錄的大小(以字節為單位)。

運行上述代碼,會以以下格式輸出目錄大小:

目錄的大小為:4.45 MB

五、統計文件夾中所有文件數量

在進行文件管理時,我們可能需要知道文件夾中所有文件的數量。以下是一個示例代碼,可以統計文件夾中所有文件數量。

<?php
function countFiles($dir)
{
    $total_files = 0;
    $files = scandir($dir);
    foreach ($files as $file) {
        if ($file === '.' || $file === '..') continue;
        $path = $dir . '/' . $file;
        if (is_file($path)) {
            $total_files++;
        } else if (is_dir($path)) {
            $total_files += countFiles($path);
        }
    }
    return $total_files;
}

// 統計文件夾中所有文件數量
$dir = 'uploads';
$num_files = countFiles($dir);
echo "文件夾中所有文件數量為:" . $num_files;
?>

上述代碼中的countFiles函數會遞歸遍歷目錄$dir下所有子目錄和子文件,然後返迴文件總數。

運行上述代碼,會以以下格式輸出文件數量:

文件夾中所有文件數量為:47

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/298041.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-28 12:17
下一篇 2024-12-28 12:17

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Python 數據緩存及其應用

    本文將為大家詳細介紹Python數據緩存,並提供相關代碼示例。 一、Python 數據緩存基礎概念 Python 是一種解釋型語言,每次執行完一條語句後就會將內存中的結果清空,如果…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • Python金融庫及其應用

    Python金融庫是Python編程語言在金融領域中的應用,也是金融分析和數據處理的重要工具。它提供了豐富的金融計算和數據處理功能,使得金融分析師能夠快速、高效地進行數據分析和建模…

    編程 2025-04-29
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • PHP獲取301跳轉後的地址

    本文將為大家介紹如何使用PHP獲取301跳轉後的地址。301重定向是什麼呢?當我們訪問一個網頁A,但是它已經被遷移到了另一個地址B,此時若服務器端做了301重定向,那麼你的瀏覽器在…

    編程 2025-04-27
  • Python中除法運算及其應用

    Python作為一種高級編程語言,其強大靈活的特性使其廣泛應用於各個領域中。其中的除法運算也是必不可少的一部分。除法運算主要分為整除和浮點數運算兩種類型,本文將從多個方面對Pyth…

    編程 2025-04-27
  • Python獲取py文件目錄及其應用

    本文將從多個方面介紹Python獲取py文件目錄及其應用,包括獲取py文件所在目錄和父目錄、獲取某個路徑下所有py文件、查找某個目錄下特定文件名的py文件、以及將當前目錄及其子目錄…

    編程 2025-04-27
  • PHP登錄頁面代碼實現

    本文將從多個方面詳細闡述如何使用PHP編寫一個簡單的登錄頁面。 1. PHP登錄頁面基本架構 在PHP登錄頁面中,需要包含HTML表單,用戶在表單中輸入賬號密碼等信息,提交表單後服…

    編程 2025-04-27
  • Python中遍歷字符串中的數字兩位數及其應用

    本文將從多個方面詳細闡述Python中遍歷字符串中的數字兩位數的應用及實現方法。 一、提取字符串中的數字兩位數 Python中提取字符串中的數字兩位數可以使用正則表達式,具體代碼如…

    編程 2025-04-27

發表回復

登錄後才能評論