VISUAREA: com você desde 2014  
 

CATEGORIAS

 

MIME Types e extensões de arquivo - O que são e qual a sua relação

por João Taboada11/03/20190

MIME Type ou Tipo MIME, é um padrão desenvolvido para ser utilizado originalmente em mensagens de correio eletrônico. MIME significa Multipurpose Internet Mail Extensions (1), e passou a ser definido já no início da década de 1990. Este padrão, cujo fim era o protocolo SMTP (2), acabou sendo estendido para outros protocolos de internet como o HTTP (3). Através dele é possível "dizer" aos outros softwares que tratam páginas e mensagens de internet qual a estrutura de dados dos arquivos e como estes devem ser interpretados e tratados. 


Isto pode parecer estranho, afinal, pela internet, hoje, tanto em mensagens de e-mail quanto no intercâmbio de informações, vemos todos os tipos de dados circulando. Lemos mensagens de texto simples, mensagens formatadas (o que inclui textos ricos e imagens incorporadas), imagens e arquivos anexos e temos a impressão que sempre foi assim. 


Acontece que quando foram criadas, as mensagens de e-mail e as páginas de internet permitiam apenas o tráfego de texto simples (ASCII) (4). Arquivos, formatações ricas e imagens vieram depois. O recurso dos MIME Types surgiu, portanto, para possibilitar, neste tráfego de dados entre diversos tipos de software (servidores, comunicadores instantâneos, clientes de e-mail e browsers de páginas web), que estes arquivos complexos pudessem ser lidos por estes programas e exibidos corretamente aos seus usuários. 


Os Tipos MIME são informações que podem ser recuperadas por softwares e sistemas web. Isto permite que seja feita uma verificação pelos softwares de internet ou pelos programadores para se certificar de sua idoneidade. Para desenvolvedores de web, é possível ter acesso a esta informação através de funções nativas de linguagem como mime_content_type(), do PHP, para que, ao fazer um upload em um sistema qualquer, por exemplo, algum usuário malicioso seja impedido de enviar arquivos que tenham suas extensões trocadas propositadamente (como de .EXE para .PDF). Isto evita que sejam enviados ao servidor aquivos executáveis disfarçados, como neste caso. 



Extensões 


Para quem não sabe, uma extensão de arquivo não tem nada de particular a não ser o fato de que é apenas a última parte do nome do arquivo. Uma extensão não prova nada em relação ao seu conteúdo. Existe, inclusive, uma meia verdade no fato de se achar que mudando a extensão, muda-se a característica do arquivo. Cada programa salva (guarda) os dados num ficheiro de uma forma proprietária, que apenas ele entende. Não é possível, portanto, alterar esta estrutura interna do ficheiro apenas alterando sua extensão. Transformar um arquivo em outro só acontece quando seus conteúdos têm o mesmo tipo de dados, como no caso de arquivos de texto plano (text/plain), como HTML, TXT, CSS, JavaScript, etc. Numa situação como essa é possível fazer um arquivo .TXT se transformar num .HTM. Porém, este .TXT só terá comportamento de .HTM se dentro dele contiver um texto escrito em linguagem HTML. 


Outra característica de uma extensão é que quando se instala um software ou se faz alguma configuração específica nele, a informação do nome da extensão é guardada no registro do sistema operacional (SISOP) e associada ao software que foi instalado. Assim, quando se dá dois cliques num arquivo (um HTML, por exemplo), essa ação abre o software associado e envia o ficheiro para dentro dele. Mas isso é só um entendimento do SISOP junto ao software. A despeito de que um ficheiro pode ter vários pontos fazendo parte do nome (ex.: meu.arquivo.de.texto.txt), a extensão continua sendo apenas o resto do nome do ficheiro depois do último ponto. 


Note que, quando se trabalha com sistemas operacionais case sensitives (sensitivo à caixa) como Unix e Linux, eles diferenciam arquivos que tenham seus nomes escritos com maiúsculas e minúsculas. Exemplo: meuarquivo.htm é diferente de MeuArquivo.htm


Para o Windows eles são exatamente iguais. Para o Linux, diferentes. O mesmo vai valer para arquivos com caixas diferentes nas extensões. Exemplo: MeuArquivo.htm é diferente de MeuArquivo.HTM


Isso porque, como eu falei, a extensão é apenas o pedaço final do nome do arquivo. Ser escrito em caixas diferentes, a depender do SISOP, faz diferença. Portanto, se você envia a um servidor Linux um arquivo "meuarquivo.HTM" e chama de sua página HTML 'href="meuarquivo.htm"' ele nunca será localizado. 


Curioso também é o fato de que, enquanto aplicativos de desktop como browsers, por exemplo, entendem os arquivos pelo seu MIME Type, outros, como o conhecido Photoshop, tentam entendê-lo pela extensão. Se um arquivo de imagem .JPG tiver sua extensão alterada para .GIF, o browser continuará sabendo que ele é um JPG, e o exibirá normalmente. O Photoshop, simplesmente, não o reconhecerá. Até se este mesmo arquivo tiver sua extensão retirada, continuará sendo reconhecido pelo software de internet porque sua estrutura interna (que está diretamente ligada ao Tipo MIME) continuará sendo a mesma. No entanto, tentativas de enganar o software como trocar a extensão de um arquivo de um tipo (imagem) para um arquivo de outro tipo (texto) pode confundir o navegador. 


Por essas e outras, para usuários de computador com perfil mais avançado, é substancial fazer com que o sistema operacional (como o Windows) exiba as extensões, pois, nem sempre é possível descobrir quais os tipos de arquivo que estão numa mesma pasta e que tenham nomes iguais. O sistema operacional sempre associará um ícone ao tipo de ficheiro (desde que haja um catálogo em seu banco) apenas lendo sua extensão e, no entanto, nem sempre será possível descobrir a extensão desses ficheiros através de seus ícones representativos. 



Páginas web 


Num cabeçalho HTML (< head>) de uma página web, quando se faz a inclusão de arquivos de estilo e processamento, como CSS e JavaScript, é importante informar ao browser o Tipo MIME através do atributo "type" do seu código de inclusão. Este código de inclusão poderia ser algo assim: 


link rel="stylesheet" type="text/css" href="style.css" 


Isto se deve ao fato de que, apesar de ser um arquivo de texto puro, o navegador de internet deverá entender de que maneira este arquivo deve ser tratado/interpretado. Caso se omita "rel" e "type", mesmo que seja corretamente especificado seu endereço no servidor, o ficheiro, provavelmente, não será interpretado como um ficheiro com instruções de estilo (mesmo contendo a extensão CSS), e o leiaute de sua página quebrará. 


Na nomenclatura de "type", a primeira parte antes da barra representa o tipo e a segunda parte representa o subtipo. Assim, num ficheiro CSS incorporado a uma página HTML, seu type será "text" e o subtype será "css", o que indica que este é um ficheiro de texto plano mas que deve ser tratado pelo navegador de internet como um ficheiro de folhas de estilo. 


Exemplos de outros MIME Types muito utilizados na web:  

image/png.PNGImagem PNG
application/pdf.PDFArquivo PDF 
video/mp4.MP4Vídeo MP4
application/msword.DOCArquivo do Microsoft Word


Nesses casos, caso o navegador tenha o plugin para exibir o arquivo, ele o fará na própria janela do programa, sem precisar solicitar o download para o computador do usuário. Caso não, o download será feito e o usuário terá de ver o arquivo em seu software nativo (de criação ou visualização). 



Finalizando 


Entendendo que os Tipos MIME proporcionam uma maneira segura de como interpretar os dados que circulam pela internet, todo desenvolvedor web deve tentar se valer de sua utilidade ao criar seus sistemas: 
• Ao fazer inclusões de arquivos em páginas HTML, quando isto for necessário (ex.: .js - application/javascript, .css - text/css, dentre outros). 
• Ao utilizar o recurso de forçar downloads em páginas de programação (ex.: 'header' do PHP) associando o tipo de dado à extensão. 
• Ao permitir que usuários de seu sistema façam uploads de arquivos (ex.: fazer a verificação do MIME Type ao invés de priorizar a extensão). 
• Ao especificar o tipo de dado em formulários de upload (enctype="multipart/form-data"). 
• Ao enviar e-mails através de páginas de programação (MIME-Version: 1.1, Content-type: text/plain (html),charset=utf-8). 
• Ao especificar dados de sua página web, como o charset. 


 
Caso queira complementar seu conhecimento sobre MIME, acesse os links abaixo: 
Stack Overflow - O que são MIME Types 
MDN WebDocs - MIME types 
Wikipedia - Tipo de mídia da Internet  
CCM - Padrão MIME 
Wikipedia - MIME 
GTA/UFRJ - S/MIME 
IANA - Lista de tipos MIME existentes 



Legenda das siglas citadas: 

(1) - MIME - Multipurpose Internet Mail Extensions ou Extensões Multi função para Mensagens de Internet 
(2) - SMTP - Send Mail Transfer Protocol ou Protocolo de Envio de Mensagens de Correio 
(3) - HTTP - HiperText Transfer Protocol ou Protocolo de Transferência de HiperTexto 
(4) - ASCII - American Standard Code for Information Interchange ou Código Padrão Americano para o Intercâmbio de Informação 

Entenda melhor o que são os Tipos MIME, para que servem e sua relação com extensões de arquivo.

http://www.visuarea.com.br/artigos/mime-types-e-extensoes-de-arquivo-o-que-sao-e-qual-a-sua-relacao
Curtiu? Apoie-nos compartilhando nas redes sociais.

Palavras chave: mime type, tipos mime, o que são mime types, o que são tipos mime



VEJA TAMBÉM
02/04/2024

Atomé - o desenhista e humorista de Santa Comba

Artigo biográfico sobre o desenhista e chargista espanhol




COMENTÁRIOS - Clique aqui e faça o seu
Novo comentário
Nome

E-mail (não será mostrado, mas será necessário para você confirmar seu comentário)

Comentário (de 1000 caracteres)
Nota: antes de enviar, certifique-se de que seu comentário não possui ofensas, erros de ortografia ou digitação, pois estará sujeito a avaliação e, também, não poderá ser corrigido.

SEJA O PRIMEIRO A COMENTAR ESTE POST.