東京都府中市、九段下のWEB制作会社Maromaroのブログです

2022.04.09

taka

コピペでOK!PHPでファイルのダウンロードボタン等に取得したサイズを記載する方法

こんにちは、MaromaroのTakaです。

下記画像のようにファイルのダウンロードボタンにファイル容量が記載されているボタンをWEBサイトでよく見かけると思います。

テキストの変更を手動でやられてる方もいらっしゃると思いますが、
ファイルが頻繁に更新されたり、
動的に生成されている場合は管理がとても大変です。

今回はファイルからファイルサイズを取得し、
ファイルサイズに応じて
‘GB’, ‘MB’, ‘KB’, ‘bytes’, ‘byte’
に変換して簡単に出力する方法を紹介します。

 

やり方

まず下記のような関数を用意します。


public static function ByteStr($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;
}

見ての通り関数を呼び出すときにファイルサイズを入れたら、
変換されたものが戻るようになっています。

($bytes / 1073741824, 2)

この「2」となっている部分は、小数点以下の桁数をいくつまで表示するかになります。
現在「2」になっているので冒頭の画像では小数点以下2桁まで表示しています。

ファイルサイズもファイルから取得する必要があるので、
この関数を以下のように呼び出してあげればOKです。

echo($this->ByteStr(filesize($FilePath)));

 

$FilePathとなっている部分は対象のファイルへのパスを代入してください。
関数の呼び出し方については、環境によって適宜変更してください。

以上、Takaでした。