在用户界面上显示filesize

时间:2011-02-08 13:54:22

标签: user-interface

我一直在使用以下函数在用户界面上以更易读的友好方式显示文件大小(以字节为单位)。

function bytesToSize(bytes, precision)
{  
   var kilobyte = 1024;
   var megabyte = kilobyte * 1024;
   var gigabyte = megabyte * 1024;
   var terabyte = gigabyte * 1024;
   if ((bytes >= 0) && (bytes < kilobyte)) {
       return bytes + ' B';
   } else if ((bytes >= kilobyte) && (bytes < megabyte)) {
       return (bytes / kilobyte).toFixed(precision) + ' KB';
   } else if ((bytes >= megabyte) && (bytes < gigabyte)) {
       return (bytes / megabyte).toFixed(precision) + ' MB';
   } else if ((bytes >= gigabyte) && (bytes < terabyte)) {
       return (bytes / gigabyte).toFixed(precision) + ' GB';
   } else if (bytes >= terabyte) {
       return (bytes / terabyte).toFixed(precision) + ' TB';
   } else {
       return bytes + ' B';
   }
}

然而问题是它显示X KB,X MP ..etc(将结果四舍五入显示在UI上)并且不能显示X.Y或说X,Y。在我想到这件事后,我更加困惑,我开始环顾系统,看看它们是如何在UI上显示的。以下是其中一些,

  1. FileZill:XXX,XXX,XXX字节(上传时)
  2. Windows资源管理器:XXX,XXX KB(详见视图)
  3. 现在所有这些都让我陷入了新的混乱程度,因为使用上述功能在UI上显示的尺寸并不是非常精确的想象文件大小以GB为单位显示给用户。

    请让我们知道应该向用户显示这些数据的格式,以便更加有效,同时更准确。在当今复杂的网页中,房地产价格也很昂贵,也需要考虑。

1 个答案:

答案 0 :(得分:0)

要快速了解,我喜欢文件大小格式xxx.x fooB,其中fooT, G, M, k(或空)的最大适用范围。

即,使用浮点运算将numBytes除以1024,直到它为< 1000。请记住您划分的频率,将其转换为相应的foo

当然,您可能需要考虑其他格式以获取详细的文件大小信息。