マニュアルをあまり読まないけど、必要な記事を読むと親切丁寧に書かれていることを知り、何故始めから読んでいなかったのだろうといつも自問する、下駄です。
今回は、とあるシステム構築をしているときに、ファイルダウンロードを行うサービスで、ファイルの容量も同時に表示して欲しいとの要望があったので、その対応したソースを紹介します。
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に表示変更する簡単コード
掛けてみよう!
「ファイルサイズ」と掛けまして、
「破れやすい服に鳥の糞をされた時」とときます。
そのココロは・・・
落とす時に気をつけます。
お後がよろしいようで・・・
0 件のコメント:
コメントを投稿