Skip to content

Como Exibir o Tamanho do Arquivo em um Formato Legível em Javascript

Ao lidar com arquivos, geralmente é benéfico apresentar o tamanho do arquivo em um formato compreensível. Por padrão, os tamanhos de arquivo são fornecidos em bytes, o que pode confundir a maioria dos usuários. Para tornar o tamanho do arquivo mais legível, podemos modificá-lo em um formato facilmente digerível, como kilobytes ou megabytes.

A Função readableFileSize

Um método para transformar o tamanho do arquivo em um formato facilmente compreensível envolve o desenvolvimento de uma função que aceita um valor numérico como entrada, significando o tamanho do arquivo em bytes. Esta função subsequentemente altera o tamanho do arquivo em kilobytes ou megabytes, com base nas dimensões do arquivo. Por fim, a função gera uma representação textual do tamanho do arquivo em kilobytes ou megabytes.

A seguir está a implementação da função readableFileSize:

js
export function readableFileSize(attachmentSize) {
  const DEFAULT_SIZE = 0;
  const fileSize = attachmentSize ?? DEFAULT_SIZE;

  if (!fileSize) {
    return `${DEFAULT_SIZE} kb`;
  }

  const sizeInKb = fileSize / 1024;

  if (sizeInKb > 1024) {
    return `${(sizeInKb / 1024).toFixed(2)} mb`;
  } else {
    return `${sizeInKb.toFixed(2)} kb`;  
  }
}

Agora vamos dissecar a implementação da função e examinar seu funcionamento interno.

Valor Padrão

A função começa atribuindo um valor padrão ao tamanho do arquivo. Se o parâmetro attachmentSize for undefined, um tamanho padrão de 0 bytes é usado. Isso é obtido usando o operador de coalescência nula (??), que retorna o operando do lado direito se o operando do lado esquerdo for nulo ou indefinido.

js
const DEFAULT_SIZE = 0;
const fileSize = attachmentSize ?? DEFAULT_SIZE;

Verificar Tamanho Vazio

Em seguida, a função examina se o tamanho do arquivo é 0 ou undefined. Se o tamanho do arquivo for 0 ou undefined, o tamanho padrão em kilobytes é retornado.

js
if (!fileSize) {
  return `${DEFAULT_SIZE} kb`;
}

Converter para Kilobytes ou Megabytes

Subsequentemente, a função ajusta o tamanho do arquivo para kilobytes ou megabytes, dependendo do tamanho do arquivo. Se o tamanho do arquivo for menor ou igual a 1024 kilobytes, o tamanho do arquivo em kilobytes é retornado. Caso contrário, o tamanho do arquivo é convertido para megabytes e retornado nesse formato.

js
const sizeInKb = fileSize / 1024;

if (sizeInKb > 1024) {
  return `${(sizeInKb / 1024).toFixed(2)} mb`;
} else {
  return `${sizeInKb.toFixed(2)} kb`;
}

Para converter o tamanho do arquivo para kilobytes, a função divide o tamanho do arquivo por 1024. Se o tamanho do arquivo exceder 1024 kilobytes (ou seja, 1 megabyte ou mais), o tamanho do arquivo é dividido por 1024 novamente para convertê-lo em megabytes. O método toFixed arredonda o tamanho do arquivo para duas casas decimais.

Exemplo de Uso

Aqui está um exemplo demonstrando a utilização da função readableFileSize:

js
const fileSizeInBytes = 256640;
const fileSize = readableFileSize(fileSizeInBytes); // Saída: "250.31 kb"

Neste exemplo, o tamanho do arquivo em bytes (256640) é passado para a função readableFileSize, que retorna uma representação de string do tamanho do arquivo em kilobytes (250.31 kb).

Conclusão

A função readableFileSize é uma função utilitária simples, mas prática, para converter o tamanho do arquivo em um formato mais legível. Ao exibir o tamanho do arquivo em kilobytes ou megabytes, os usuários podem compreender mais facilmente a quantidade de dados que estão manipulando. Isso é particularmente útil ao trabalhar com arquivos grandes, onde o tamanho do arquivo em bytes pode ser difícil de entender.