I am currently trying to convert this php function to javascript:
JavaScript
x
6
1
function human_filesize($bytes, $decimals = 2) {
2
$sz = 'BKMGTP';
3
$factor = floor((strlen($bytes) - 1) / 3);
4
return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . @$sz[$factor];
5
}
6
Here’s what I have so Far:
JavaScript
1
8
1
function human_filesiz(bytes){
2
var decimals = 2;
3
var sz = 'BKMGTP';
4
var factor = Math.floor((bytes.length - 1) / 3);
5
return (bytes / Math.pow(1024, factor));
6
//return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . @$sz[$factor];
7
}
8
Im Just struggling with the last line. Any Help Greatly Appreciated.
Advertisement
Answer
Did you have a look at: http://programanddesign.com/js/human-readable-file-size-in-javascript/ They have two version of a Javascript solution for Human Readable Filesize:
JavaScript
1
5
1
function fileSize(size) {
2
var i = Math.floor(Math.log(size) / Math.log(1024));
3
return (size / Math.pow(1024, i)).toFixed(2) * 1 + ' ' + ['B', 'kB', 'MB', 'GB', 'TB'][i];
4
}
5
and
JavaScript
1
10
10
1
function readableFileSize(size) {
2
var units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
3
var i = 0;
4
while(size >= 1024) {
5
size /= 1024;
6
++i;
7
}
8
return size.toFixed(1) + ' ' + units[i];
9
}
10
Update loop criteria to while(size >= 1024 && i < units.length - 1)
to prevent undefined
after YB or last unit exceeded as mentioned by @holytrousers.