Отображение размера файла в пользовательском интерфейсе - PullRequest
0 голосов
/ 08 февраля 2011

Я использую следующую функцию для отображения размера файла в байтах в более удобочитаемом и понятном для пользователя интерфейсе.

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 .. и т.д.(округление результатов для отображения в пользовательском интерфейсе) и не в состоянии показать XY или сказать X, Y.После того, как эта вещь пришла мне в голову, я был в замешательстве и начал искать системы, чтобы показать, как они отображают их в пользовательском интерфейсе.Ниже приведены некоторые из них,

  1. FileZill: XXX, XXX, XXX байт (при загрузке)
  2. Проводник Windows: XXX, XXX КБ (в подробностях)

Теперь все это привело меня на новый уровень путаницы, так как размер, отображаемый в пользовательском интерфейсе с использованием вышеуказанной функции, не совсем точен, представьте размер файла в ГБ, который неправильно отображается для пользователя.

Пожалуйста, дайте знатьв каком формате эти данные должны отображаться для пользователей, чтобы быть более полезными и в то же время более точными.Кроме того, недвижимость стоит дорого на современных сложных веб-страницах, которые также необходимо учитывать.

1 Ответ

0 голосов
/ 08 февраля 2011

Для быстрого обзора мне нравится формат файла формата xxx.x fooB, где foo самый большой применимый из T, G, M, k (или пустой).

То есть делим numBytes на 1024, пока не получим < 1000, используя арифметику с плавающей запятой. Помните, как часто вы делите, преобразовать это в соответствующий foo.

Конечно, вы можете рассмотреть другие форматы для получения подробной информации о размере файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...