上傳檔案的$_FILES["file"]變數共會產生以下五個陣列內容
$_FILES["file"]["name"]:上傳檔案的原始名稱。
$_FILES["file"]["type"]:上傳的檔案類型。
$_FILES["file"]["size"]:上傳的檔案原始大小。
$_FILES["file"]["tmp_name"]:上傳檔案後的暫存資料夾位置。
$_FILES["file"]["error"]:如果檔案上傳有錯誤,可以顯示錯誤代碼。
如果要取檔案大小值,只要吧$_FILES["file"]["size"]存進資料庫即可,但是$_FILES["file"]["size"]預設解析檔案大小的單位是byte,所以如果是1MB大小的檔案則會取得1048576-byte值,如果能有一個function能吧數值轉換成B/KB/MB/GB/TB該多好,不然一長串數字USER也看不懂,上網Google一下找一個還不錯的單位換算function,測試都沒問題分享給大家。
吧以下的code丟到模組的function.php中,記得在要使用的php檔引入function.php
//單位換算
function formatBytes($size) {
$units = array(' B', ' KB', ' MB', ' GB', ' TB');
for ($i = 0; $size >= 1024 && $i < 4; $i++) $size /= 1024;
return round($size, 2).$units[$i];
}
$_FILES["file"]["name"]:上傳檔案的原始名稱。
$_FILES["file"]["type"]:上傳的檔案類型。
$_FILES["file"]["size"]:上傳的檔案原始大小。
$_FILES["file"]["tmp_name"]:上傳檔案後的暫存資料夾位置。
$_FILES["file"]["error"]:如果檔案上傳有錯誤,可以顯示錯誤代碼。
如果要取檔案大小值,只要吧$_FILES["file"]["size"]存進資料庫即可,但是$_FILES["file"]["size"]預設解析檔案大小的單位是byte,所以如果是1MB大小的檔案則會取得1048576-byte值,如果能有一個function能吧數值轉換成B/KB/MB/GB/TB該多好,不然一長串數字USER也看不懂,上網Google一下找一個還不錯的單位換算function,測試都沒問題分享給大家。
吧以下的code丟到模組的function.php中,記得在要使用的php檔引入function.php
//單位換算
function formatBytes($size) {
$units = array(' B', ' KB', ' MB', ' GB', ' TB');
for ($i = 0; $size >= 1024 && $i < 4; $i++) $size /= 1024;
return round($size, 2).$units[$i];
}
這樣在需要使用轉換的地方需呼叫涵式即可
echo $filesize= formatBytes($size=$var);
$var數值就是存進資料表的$_FILES["file"]["size"]值
實際來測試一下
echo $filesize= formatBytes($size=1000000000);
輸出結果 953.67MB
轉換功能正常,有需要的朋友可以參考看看!!
教學撰寫:徐嘉裕 Neil hsu
留言
張貼留言