[php] ファイル容量の扱い

2020年3月7日

テクノロジー

マニュアルをあまり読まないけど、必要な記事を読むと親切丁寧に書かれていることを知り、何故始めから読んでいなかったのだろうといつも自問する、下駄です。 今回は、とあるシステム構築をしているときに、ファイルダウンロードを行うサービスで、ファイルの容量も同時に表示して欲しいとの要望があったので、その対応したソースを紹介します。

phpでのファイルサイズの取得は、飴を舐めるよりも簡単

<?php $path = "sample.pdf"; echo filesize($path); > 1234 リファレンスページを見るとわかりやすく書かれています。 参考 : https://www.php.net/manual/ja/function.filesize.php 注意点としては、存在しないファイルパスを入れてしまうとエラーになるので、is_fileで確認するようにした方がいいですね。

単位を付けたい

そして、表示する場合には、バイト表示よりも、KBやMBで表示したいと思うのですが、先程のリファレンスページに、いくつか、単位表示に変換するスニペットが書かれています。 <?php function human_filesize($bytes, $decimals = 2) { $sz = 'BKMGTP'; $factor = floor((strlen($bytes) - 1) / 3); return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . @$sz[$factor]; } ?>   function FileSizeConvert($bytes) { $bytes = floatval($bytes); $arBytes = array( 0 => array( "UNIT" => "TB", "VALUE" => pow(1024, 4) ), 1 => array( "UNIT" => "GB", "VALUE" => pow(1024, 3) ), 2 => array( "UNIT" => "MB", "VALUE" => pow(1024, 2) ), 3 => array( "UNIT" => "KB", "VALUE" => 1024 ), 4 => array( "UNIT" => "B", "VALUE" => 1 ), ); foreach($arBytes as $arItem) { if($bytes >= $arItem["VALUE"]) { $result = $bytes / $arItem["VALUE"]; $result = str_replace(".", "," , strval(round($result, 2)))." ".$arItem["UNIT"]; break; } } return $result; } 他にも使えそうな便利スニペットがたくさん掲載されています。 気になる方は探してみると面白いかも。

以前書いた記事もよろしくね

それから、以前にjavascriptと併用して使えるphp単位変換コードをブログで書いたので、よかったらこちらも参考にしてみてください。 [Javascript , PHP] ファイルサイズのバイト数をKBやMBに表示変更する簡単コード

掛けてみよう!

「ファイルサイズ」と掛けまして、 「破れやすい服に鳥の糞をされた時」とときます。 そのココロは・・・ 落とす時に気をつけます。 お後がよろしいようで・・・

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。