Mostrando postagens com marcador HTML. Mostrar todas as postagens
Mostrando postagens com marcador HTML. Mostrar todas as postagens

terça-feira, 17 de março de 2015

Regex para validação de código hexadecimal HTML

Galera, bem vindo ao Preciso Estudar Sempre. Esse post é da série de dicas rápidas que temos aqui no blog.

Vamos supor que você está desenvolvendo algum tipo de color picker e precisa validar as cores que foram expressadas através de codificação hexadecimal. Como você vai validar isso ?

É possível realizar a validação desta máscara de forma programática mas, imagina só que trabalhão isso vai dar. É muito mais fácil você aplicar uma regex para realizar essa validação.

A regex que você precisa está aqui.

 ^#([a-fA-F0-9]){3}(([a-fA-F0-9]){3})?$  

Vou deixar aí embaixo, linkado, referências para outros post aqui do blog que falam sobre regex.

Sugestões ?! Críticas ?! Elogios ?! 

Deixe aí nos comentários ou na nossa página do facebook.


Regex para endereço MAC: http://precisoestudarsempre.blogspot.com.br/2015/01/regex-para-endereco-mac.html
Regex para validar URL: http://precisoestudarsempre.blogspot.com.br/2014/11/regex-para-validar-url.html
Regex para identificar possíveis causas de NullPointerException: http://precisoestudarsempre.blogspot.com.br/2014/11/regex-para-identificar-possiveis-causas.html
Máscara para RG e CPF: http://precisoestudarsempre.blogspot.com.br/2014/09/mascara-para-rg-e-cpf.html
Regex para horas - Máscara para horas: http://precisoestudarsempre.blogspot.com.br/2013/06/regex-para-horas-mascara-para-horas.html
Máscara para valores decimais negativos: http://precisoestudarsempre.blogspot.com.br/2013/03/mascara-para-valores-decimais-negativos.html
Leia Mais ››

quarta-feira, 17 de dezembro de 2014

Entendendo o SMTP

Eu sempre tive bastante dúvida sobre esse assunto. Como funcionam os protocolos de email ? Como a troca de mensagens é realizada ? Na faculdade, esse tema é abordado mas, de uma forma muito superficial logo, isso não me deixou satisfeito.

Então, o post dessa semana será: "Entendendo o SMTP".

Acredito que a melhor fonte de pesquisa para este assunto seja sua RFC (Request for Comment), a RFC 5321.

De acordo com a RFC, para realizar uma transferência de mensagem para um servidor SMTP, um SMTP client estabelece uma canal de transmissão de duas vias para um servidor. Um SMTP client determina o endereço de um determinado servidor SMTP pela resolução de um domínio de destino para um servidor de Mail eXchanger ou um servidor final.

Um servidor SMTP pode ser ou o destino final ou um destino intermediário (pode assumir o papel de um SMTP client após receber a mensagem) ou um gateway (pode transportar a mensagem à frente usando algum protocolo diferente do SMTP). Os comandos SMTP são gerados pelo SMTP Client e enviados ao servidor SMTP. Respostas SMTP são enviadas do servidor para o cliente em resposta aos comandos.


Em outras palavras, transferência de mensagens podem ocorrer em uma única conexão entre o original SMTP-remetente e o final SMTP-destinário, ou podem ocorrer em uma série de pulos através de sistemas intermediários. Em outros casos, uma vez que o servidor publicou uma resposta de sucesso no fim do dado da mensagem, uma transferência de responsabilidade pela mensagem ocorre: o protocolo requer que o servidor deve aceitar a responsabilidade de também entregar mensagem ou reportar apropriadamente a falha da entrega, caso ocorra (veja seções 6.1, 6.2 e 7.8 da RFC).

Uma vez que o canal de transmissão foi estabelecido e o inicial handshaking é feito, o SMTP Client, normalmente, inicia uma transação de mensagem. Tal transação consiste em um série de comandos para especificar o remetente e destinatário da mensagem e transmissão do conteúdo da mesma (incluindo qualquer linha na seção de cabeçalho ou outra estrutura). Quando a mesma mensagem é enviada para vários recipientes, este protocolo encoraja a transmissão de uma única cópia dos dados para todos os recipientes do mesmo servidor de destino (ou servidor retransmissor intermediário).

O servidor responde com uma resposta para cada comando. Respostas podem indicar que o comando foi aceito, que comandos adicionais são esperados, ou que um condição de erro temporário ou permanente existe. Comandos que especifiquem o remetente ou recipientes pode incluir requisições de extensão de serviço SMTP server-permitted (ver seção 2.2 da RFC). O diálogo é propositalmente lock-step (trava e faço), one-at-a-time (um de cada vez), embora isso possa ser modificado por um acordo mútuo a partir de requisições de extensão tais como comandos de pipelining.

Uma vez que dada mensagem foi transmitida, o client pode ou pedir que a conexão seja encerrada ou iniciar outra transação. Mais adiante, um SMTP Client pode usar uma conexão para um servidor SMTP para serviços auxiliares tais como verificação de endereços de email ou recuperação de endereços dos participantes da mailing list.

Como dito acima, este protocolo provê mecanismos para a transmissão de mensagens. Historicamente, esta transmissão normalmente ocorria diretamente do servidor remetente para o servidor destinatário quando os dois estavam conectados ao mesmo serviço de transporte. Quando eles não estão conectados ao mesmo serviço de transporte, a transmissão ocorre via um ou mais servidor de retransmissão SMTP. Um caso muito comum na internet, atualmente, envolve submissão da mensagem original para um intermediário, servidor de submissão de mensagem, o qual é similar a uma retransmissão mas possui algumas propriedades adicionais. Um servidor intermediário que atue como ou um retransmissor SMTP ou como um gateway em alguns ambientes de transmissão é geralmente selecionado através do uso do mecanismo Mail eXchanger DNS.

É isso galera, espero ter trazido este conteúdo da RFC de forma bem clara e explicativa.

Dúvidas, sugestões ou críticas ? Deixe aí embaixo nos comentários ou pelo facebook do Preciso Estudar Sempre.

https://www.facebook.com/precisoestudarsempre/
   

Referência: http://tools.ietf.org/html/rfc5321#page-7
Leia Mais ››

quinta-feira, 4 de dezembro de 2014

Entendendo o SSL

Este assunto sempre me deixou bastante intrigado pois, eu sempre me perguntava o que era aquele https, na barra de endereço do meu browser. Então, decidi criar esse post para que, as pessoas possam ter um entendimento maior sobre esse assunto.

Hoje, nossa "aulinha" será mais teórica. Então, você que está ávido por alguma classe Java ou algum SQL, se acalme por favor. É importante citar que, para que você possa entender o assunto abordado, é de extrema necessidade que você entenda a arquitetura cliente-servidor.

Caso não conheça, clique aqui e leia sobre o assunto.

Na minha incansável procura pelo significado do https, notei que sera sempre levado pelas minhas fontes para textos que abordavam o protocolo de segurança SSL. Então, concluí que, eu precisava primeiro aprender mais sobre o protocolo para assim, entender consequentemente o que significa o tal https.

O SSL, abreviação para Secured Socket Layer, é um protocolo de segurança, conforme dito acima, que permite que aplicativos cliente/servidor possam trocar informações em total segurança, protegendo a integridade e a veracidade do conteúdo que trafega na Internet. Tal segurança só é possível através da autenticação das partes envolvidas na troca de informações.

Seu funcionamento é bastante simples. Quando você abre seu browser, digita algum site na barra de endereço e aperta Enter, uma requisição de acesso é realizada. Essa requisição verifica se existe algum certificado digital. Caso exista, é solicitado o envio deste certificado (tome como idéia este certificado como se fosse um documento de identidade). Após recebido é verificado se o certificado é confiável, válido e se está relacionado com o site que o enviou.

Caso o certificado seja confiável, uma chave pública é enviada pelo browser para o servidor. No momento que esta chave é recebida, o servidor compara a chave pública com sua chave particular. Caso sejam compatíveis, uma comunicação segura é iniciada. Uma mensagem que tenha sido criptografada com uma chave pública somente poderá ser decifrada com a sua chave privada (simétrica) correspondente.

A imagem abaixo foi retirada deste link e exemplifica bem o que estou dizendo. Com ela é possível um total entendimento de como o SSL funciona entre o browser e o servidor.


Agora sabemos o que se trata o nosso https, ele é nada mais, nada menos que uma requisição http segura onde, o s significa secured.

Espero ter ajudado e esclarecido este conceito na mente de vocês.

Sugestões ? Críticas ? Melhorias ? Deixe aí embaixo nos comentários ou comente também na página do facebook.

Preciso Estudar Sempre: https://www.facebook.com/precisoestudarsempre/

Referências:
http://www.techtudo.com.br/artigos/noticia/2012/01/o-que-e-ssl.html
http://www.tecmundo.com.br/seguranca/1896-o-que-e-ssl-.htm
http://www.webopedia.com/TERM/S/SSL.html
Leia Mais ››

domingo, 13 de abril de 2014

Diferença entre alt e title

Olá galera,

hoje teremos um post pequeno, explicando algo simples mas, que causa geralmente certa confusão.

Qual a diferença entre o atributo alt e title ?

Isso causa certa confusão por causa de nosso amigo IE que, em sua versão 7 e anteriores, exibia o que tinha sido especificado no valor do atributo alt, como uma tooltip. Este comportamento está errado visto que, o atributo alt representa o valor exibido caso uma imagem não seja carregada. Exemplo:

Tento carregar a imagem logo1.jpg

<img src="logo1.jpg" />

Porém, ela não existe. Se tivéssemos especificado um valor no atributo alt, o valor ali especificado seria exibido.

<img src="logo1.jpg" alt="Sei que a imagem não existe" />

O atributo title funciona como uma tooltip, um texto explicativo. Para visualizar a tooltip, basta parar o mouse em cima do elemento HTML.

Referências:
http://www.w3schools.com/tags/att_img_alt.asp
Leia Mais ››

quinta-feira, 1 de agosto de 2013

Regex para aceitar acentos

Um dia estava precisando realizar uma validação de entrada de dados em um campo de texto. Nesse campo de texto só seria permitido entrar valores nos seguintes padrões:

aaaaa
AAAA
aaa111
AAA111
AAaa111
áááÁÁÁÁ
a-a-a
_i-i-i-i

onde:

a: representa letra qualquer que pode ir de a - z
A: representa letra qualquer que pode ir de A - Z
1: número qualquer que pode ir de 0 - 9
á: representa letra acentuada qualquer que pode ir de à-ú
Á: representa letra acentuada  qualquer que pode ir de À-Ú
_ e -: representam os caracteres _ e -

Não queria usar nenhum plugin jquery. Queria usar uma regex pois, queria algo performático. Realizando pesquisas atrás da regex, achei a solução no endereço (para quem estiver lendo esse post, recomendo olhar esse link).

http://aurelio.net/regex/guia/acentuacao.html#5_5

Analisando o conteúdo do link, montei minha regex, segue abaixo:

/^([a-zA-Zà-úÀ-Ú0-9]|-|_|\s)+$/

onde:

^ = Demarca início da linha.
[a-zA-Zà-úÀ-Ú0-9] = Representa uma letra qualquer que pode estar no intervalo de a-z ou, de A-Z, ou de à-ú, ou de À-Ú, ou um número que pode estar entre 0 ou 9.
| = Representa a operação lógica "or".
- e _ = Representam os caracteres - (hífen) e _ (underline), respectivamente.
\s = Encontra um caracter de espaço (whitespace).
+ = Representa 1 ou mais ocorrências de alguma coisa.
$ = Demarca fim de linha.

Importante: Para entender uma regex é necessário avaliar as partes em alguns momentos mas, em outros é necessário entender o todo.

Se, esta é sua primeira vez aqui no blog ou, é seu primeiro contato com regex, recomendo você dar uma olhadinha em outros posts:

http://precisoestudarsempre.blogspot.com.br/2013/03/mascara-para-valores-decimais-negativos.html
http://precisoestudarsempre.blogspot.com.br/2013/05/regex-para-datas-mascara-para-datas.html
http://precisoestudarsempre.blogspot.com.br/2013/06/regex-para-horas-mascara-para-horas.html

Recomendo também você dar uma olhadinha nesse link:

http://www.w3schools.com/jsref/jsref_obj_regexp.asp
Leia Mais ››

terça-feira, 14 de maio de 2013

Regex para datas - Máscara para datas

Para validar datas é possível criar diversas soluções, como:
  • Validação server-side;
  • Utilização de plugins prontos;
  • Quebrar a string fazendo um split na barra e validando caracter por caracter via Javascript.
Existe uma outra forma, embora não tão simples mas, muito refinada e com poucas linhas de código. Essa forma é utilizar uma Regex. Em Javascript é possível criar regexs e utilizá-las para validação. Quando criamos uma regex em Javascript, um objeto do tipo RegExp é gerado e com eles métodos são disponibilizados. Abaixo, apresento-lhes uma regex que criei para realizar essa validação.

/([0-2][0-9]|3[0-1])\/(0[0-9]|1[0-2])\/[0-9]{4}/

Essa regex valida datas do formato dd/mm/yyyy. Com dias indo de 01 até 31, meses indo de 01 até 12 e anos variados.
Leia Mais ››

quarta-feira, 10 de abril de 2013

Bug $.post

Na construção de funções que utilizam os métodos para ajax do jquery, notei que existem diferenças na passagem de parâmetros.

Que diferenças são essas ?

De acordo com a documentação do jquery você realizar uma requisição ajax através dos métodos:

jQuery.ajax()
jQuery.get()
jQuery.post()

O método jQuery.ajax() ou $.ajax() realizam uma requisição ajax podendo ser GET ou POST. O método jQuery.get() realiza uma requisição GET para carregar dados do servidor, é uma "abreviação" do método $.ajax, ou seja, é equivalente à:

$.ajax({
  url: url,
  data: data,
  success: success,
  dataType: dataType
});

Finalmente o método jQuery.post() realiza uma requisição POST para carregar dados do servidor, é uma "abreviação" do método $.ajax, ou seja, é equivalente à:


$.ajax({
  type: "POST",
  url: url,
  data: data,
  success: success,
  dataType: dataType
});


Vamos analisar aqui o método $.post(). Nesse método podemos passar parâmetros de duas formas, a primeira forma é via uma string, exemplo:

function foo(){
       var valor1 = 1;
       var valor2 = 'Joao Paulo';
       $.post("sua_url", "parametro1=" + valor1 + '&parametro2=' + valor2,
                 function(retornoAjax){},
       "html");
}

Nesse exemplo, realizamos uma requisição ajax ao servidor passando dois parâmetros. Quando esses dados chegarem no servidor, o parametro1 vai chegar com o valor "1" e o parametro2 vai chegar com o valor "Joao Paulo". A integridade dos dados vai ser mantida mas, se mudarmos só um pouco o exemplo teremos um problema.


function foo(){
       var valor1 = 1;
       var valor2 = 'João Paulo';
       $.post("sua_url", "parametro1=" + valor1 + '&parametro2=' + valor2,
                 function(retornoAjax){},
       "html");
}

Quando esses dados chegarem no servidor, o parametro1 vai continuar com o valor 1 mas, o parametro2 vai vir com caracteres estranhos, "quebrados", quadradinhos e afins. Para solucionar esse problema, temos que passar os parâmetros de uma outra forma, via JSON. Passando os parâmetros via JSON, conseguimos manter a integridade dos dados quando eles chegam no servidor. Para passar parâmetros via JSON, teremos de modificar um pouco nossa função.


function foo(){
       var valor1 = 1;
       var valor2 = 'João Paulo';
       $.post("sua_url", {parametro1: valor1, parametro2: valor2},
                 function(retornoAjax){},
       "html");
}

Caso você tenha dúvidas de como trabalhar com JSON, recomendo dar uma lida em outro post aqui do blog. Desse jeito podemos manter a integridade dos nossos dados e, o valor do parametro2 chegar no servidor como "João Paulo". Podemos também alterar um pouco mais nossa função caso queiramos passar mais parâmetros.


function foo(){
       var valor1 = 1;
       var valor2 = 'João Paulo';
       var parametros = {

      'parametro1' : valor1,
              'parametro2' : valor2
       };
       $.post("sua_url", parametros,

                 function(retornoAjax){},
       "html");
}


Leia Mais ››

quarta-feira, 13 de março de 2013

Máscara para valores decimais negativos

Máscaras para valores decimais negativos é sempre algo bem chato e complicado de achar, nas minhas pesquisas na net não achei nada que me ajudasse, o plugin maskedinput não pode me ajudar nessa situação pois, ele se encaixa muito bem para valores fixos tipo, datas, horários, cpf/cnpj, rg e por ai vai.

Outro plugin que achei que talvez fosse me ajudar era o maskedmoney(ou alguma coisa assim) mas, também não era o que eu queria. Então pensei:

"Porque não faço a minha própria máscara ?"

Mãos à obra.

Já sabia que iria ter d fazer uma regex em javascript se queria uma solução limpa e eficaz, só que ai surgia um outro grande problema, como fazer a tal Regex ? Depois de quebrar muito a cabeça e ter ajuda de um guru do javascript, Leonardo Dutra, conseguimos construir uma regex que pudesse validar campos decimais negativos e positivos.

/^-?[0-9]{1,3}(?:\.[0-9]{2})?$/

Ai está a obra prima mas, agora precisamos entender o que isso faz para que possamos construir outras no futuro. Em javascript, a barra / no início e no fim é obrigatório, isso é próprio da linguagem pois, quando você constrói uma regex um objeto RegExp é gerado, logo você deverá sempre por.

O símbolo ^ denota início de sentença, logo estamos construindo uma regex que vai validar inícios de sentença.

Os símbolos -? significam que eu posso ter 1 ou nenhuma ocorrência do sinal negativo(-), o ? dá esse significado de 1 ou 0 ocorrências.

[0-9] significa que eu posso ter um número de 0 à 9. {1,3} significa que você pode ter de 1 à três ocorrências mas, de que ? Note que o [0-9] e o {1,3} estão juntos, logo eu posso ter de 1 à 3 ocorrências de números que vão de 0 à 9.

O segredo de entender uma regex é saber avaliar as partes mas, também saber avaliar o todo.

Os parênteses () significam agrupamento e, o ?: significa que realizo um agrupamento sem guardar dados em um vetor interno mas, hein ? Quando você monta uma regex agrupada os valores capturados por ela são guardados em um vetor para utilização futura.

A contra barra \ significa caracter de escape, por que usei isso ?A máscara deve aceitar ponto como separador decimal mas, o caracter . têm significado próprio no contexto da regex, logo uso a contra barra para dizer ao javascript que o caracter ponto não deve ser levado em conta como sendo uma regex. Logo, após o ponto encontramos outro [0-9], já sabemos o que significa.

O {2} significa que só posso ter duas ocorrências de ?:\.[0-9], ou seja, eu só posso ter duas casas depois da vírgula. Logo, após o fecha parênteses ) encontramos um ?. Isso significa que 1 ou nenhuma ocorrência de (?:\.[0-9]{2}), ou seja, que eu posso ter duas casas depois da vírgula ou não para que tais valores sejam aceitos:

-7
-85
-856
85
99
2
856.55
-856.55

O sinal de $ denota fim de sentença, logo estamos validando também o fim da sentença também. Podemos notar que construimos uma regex fechada. Para por em prática essa regex podemos usar métodos especiais para isso, como o test() que valida se um valor passado como parâmetro está de acordo com a regex ou não, retornando true ou false.

Qualquer dúvida é só comentar.

Leia Mais ››

quinta-feira, 9 de agosto de 2012

O que é tabindex e pra que serve ?

Tabindex é um atributo como qualquer outro das tags html, muito usado nas tags "input". O tabindex serve para controlar a ordem em que o cursor percorrerá os campos de um formulário ao se utilizar a tecla TAB. Este atributo pode ser utilizado em hyperlinks e elementos de formulário(inputs, selects, entre outros).

Quando se constrói um formulário em html e não se especifica o tabindex, a ordem do cursor será de cima para baixo, da esquerda para a direita, ou seja, o padrão. Mas, quando o tabindex é especificado através de números (ordem que o cursor deverá percorrer), o controle de movimentação do cursor é feito. Após o término da especificação do tabindex, o padrão volta a ser adotado.

Segue exemplo de formulário que usa o tabindex.

<html>
    <head>
   
    </head>
    <body>
        <form>
            Formulário de assinatura de revista
            <br/>
            <br/>
            Nome: <input type="text" name="nome" tabindex="1" size="35" value="" /> <br/>
            Idade: <input type="text" name="idade" tabindex="3" size="35" value="" /> <br/>
            Sexo: <input type="radio" tabindex="2" name="sexo" value="M" /> Masculino &nbsp <input type="radio" name="sexo" value="F" /> Feminino <br/>
            Tipo de Pagamento:
            <select name="tiposPagamento">
                <option value="1">A vista</option>
                <option value="2">Parcelado no crédito</option>
                <option value="3">Cheque</option>
            </select>
        </form>
    </body>
</html>

Referência: http://warau.nied.unicamp.br/warauv2/?q=node/30


Leia Mais ››

terça-feira, 17 de julho de 2012

Espaços em branco em navegadores

Isso me deu uma grande dor de cabeça, porque estava tentando bloquear espaços em branco em campos de input. Em qualquer outro navagador que não seja o IE espaços em branco são tratados da forma correta, ou seja,

" "

, logo é possível bloquear esse caracter através de uma simples codificação javascript mas, no IE esse mesmo espaço em branco citado acima é interpretado dessa forma:

""

ou seja, o "trim" é automático.

Compartilho isso porque tive uma grande dor de cabeça para perceber o mesmo. Contudo, se você deseja bloquear espaços em brancos recomendo o jQuery.trim(), que funciona muito bem e em qualquer browser.
Leia Mais ››

terça-feira, 24 de janeiro de 2012

Diferenças de MIME Type entre navegadores

Um certo dia trabalhando até mais tarde, percebi que o módulo de anexo do sistema em que trabalho parou de funcionar quando realizei um teste no Opera. Assustado com esse fato, porque não tinha realizado nenhuma alteração na funcionalidade do upload de arquivo, começei a "debugar" o código e percebi que quando recuperava o content-type de uma imagem com extensão .jpg no server-side sendo que a requisição tinha sido enviada pelo IE, era retornado "image/pjpeg" e quando usava Opera ou outro navegador era retornado "image/jpeg", ou seja, dependendo de que navegador se utilize existe uma diferença de MIME types.

Para entendermos melhor o assunto vamos entender como as coisas funcionam. Os MIME types são similares às extensões dos arquivos mas mais universalmente aceitos, os MIME types são usados para indentificar o tipo da informacão que o arquivo contém. Enquanto a extensão do arquivo .html é informalmente entendida como uma página HTML, não existe exigência que um arquivo com a extensão .html signifique de fato que o arquivo é uma página HTML. Páginas HTML podem ter diferentes extensões.

No protocolo HTTP usado pelo browsers para se comunicar com os servidores, a extensão do arquivo da URL não é usado para determinar o tipo da informação que o servidor irá retornar, De fato, pode não existir a extensão do arquivo no final da URL.

Ao invés de usar a extensão do arquivo para se guiar, o servidor especifica o correto MIME type usando o header Content-type quando ele responde à requisição feita pelo browser.

Abaixo segue uma lista completa de MIME type

Conteúdo do post encontrado nos site:

http://www.boutell.com/newfaq/definitions/mimetype.html
http://reference.sitepoint.com/html/mime-types-full


Table 1. Complete list of MIME types
Suffixes applicable Media type and subtype(s)
.3dm x-world/x-3dmf
.3dmf x-world/x-3dmf
.a application/octet-stream
.aab application/x-authorware-bin
.aam application/x-authorware-map
.aas application/x-authorware-seg
.abc text/vnd.abc
.acgi text/html
.afl video/animaflex
.ai application/postscript
.aif audio/aiff
.aif audio/x-aiff
.aifc audio/aiff
.aifc audio/x-aiff
.aiff audio/aiff
.aiff audio/x-aiff
.aim application/x-aim
.aip text/x-audiosoft-intra
.ani application/x-navi-animation
.aos application/x-nokia-9000-communicator-add-on-software
.aps application/mime
.arc application/octet-stream
.arj application/arj
.arj application/octet-stream
.art image/x-jg
.asf video/x-ms-asf
.asm text/x-asm
.asp text/asp
.asx application/x-mplayer2
.asx video/x-ms-asf
.asx video/x-ms-asf-plugin
.au audio/basic
.au audio/x-au
.avi application/x-troff-msvideo
.avi video/avi
.avi video/msvideo
.avi video/x-msvideo
.avs video/avs-video
.bcpio application/x-bcpio
.bin application/mac-binary
.bin application/macbinary
.bin application/octet-stream
.bin application/x-binary
.bin application/x-macbinary
.bm image/bmp
.bmp image/bmp
.bmp image/x-windows-bmp
.boo application/book
.book application/book
.boz application/x-bzip2
.bsh application/x-bsh
.bz application/x-bzip
.bz2 application/x-bzip2
.c text/plain
.c text/x-c
.c++ text/plain
.cat application/vnd.ms-pki.seccat
.cc text/plain
.cc text/x-c
.ccad application/clariscad
.cco application/x-cocoa
.cdf application/cdf
.cdf application/x-cdf
.cdf application/x-netcdf
.cer application/pkix-cert
.cer application/x-x509-ca-cert
.cha application/x-chat
.chat application/x-chat
.class application/java
.class application/java-byte-code
.class application/x-java-class
.com application/octet-stream
.com text/plain
.conf text/plain
.cpio application/x-cpio
.cpp text/x-c
.cpt application/mac-compactpro
.cpt application/x-compactpro
.cpt application/x-cpt
.crl application/pkcs-crl
.crl application/pkix-crl
.crt application/pkix-cert
.crt application/x-x509-ca-cert
.crt application/x-x509-user-cert
.csh application/x-csh
.csh text/x-script.csh
.css application/x-pointplus
.css text/css
.cxx text/plain
.dcr application/x-director
.deepv application/x-deepv
.def text/plain
.der application/x-x509-ca-cert
.dif video/x-dv
.dir application/x-director
.dl video/dl
.dl video/x-dl
.doc application/msword
.dot application/msword
.dp application/commonground
.drw application/drafting
.dump application/octet-stream
.dv video/x-dv
.dvi application/x-dvi
.dwf drawing/x-dwf (old)
.dwf model/vnd.dwf
.dwg application/acad
.dwg image/vnd.dwg
.dwg image/x-dwg
.dxf application/dxf
.dxf image/vnd.dwg
.dxf image/x-dwg
.dxr application/x-director
.el text/x-script.elisp
.elc application/x-bytecode.elisp (compiled elisp)
.elc application/x-elc
.env application/x-envoy
.eps application/postscript
.es application/x-esrehber
.etx text/x-setext
.evy application/envoy
.evy application/x-envoy
.exe application/octet-stream
.f text/plain
.f text/x-fortran
.f77 text/x-fortran
.f90 text/plain
.f90 text/x-fortran
.fdf application/vnd.fdf
.fif application/fractals
.fif image/fif
.fli video/fli
.fli video/x-fli
.flo image/florian
.flx text/vnd.fmi.flexstor
.fmf video/x-atomic3d-feature
.for text/plain
.for text/x-fortran
.fpx image/vnd.fpx
.fpx image/vnd.net-fpx
.frl application/freeloader
.funk audio/make
.g text/plain
.g3 image/g3fax
.gif image/gif
.gl video/gl
.gl video/x-gl
.gsd audio/x-gsm
.gsm audio/x-gsm
.gsp application/x-gsp
.gss application/x-gss
.gtar application/x-gtar
.gz application/x-compressed
.gz application/x-gzip
.gzip application/x-gzip
.gzip multipart/x-gzip
.h text/plain
.h text/x-h
.hdf application/x-hdf
.help application/x-helpfile
.hgl application/vnd.hp-hpgl
.hh text/plain
.hh text/x-h
.hlb text/x-script
.hlp application/hlp
.hlp application/x-helpfile
.hlp application/x-winhelp
.hpg application/vnd.hp-hpgl
.hpgl application/vnd.hp-hpgl
.hqx application/binhex
.hqx application/binhex4
.hqx application/mac-binhex
.hqx application/mac-binhex40
.hqx application/x-binhex40
.hqx application/x-mac-binhex40
.hta application/hta
.htc text/x-component
.htm text/html
.html text/html
.htmls text/html
.htt text/webviewhtml
.htx text/html
.ice x-conference/x-cooltalk
.ico image/x-icon
.idc text/plain
.ief image/ief
.iefs image/ief
.iges application/iges
.iges model/iges
.igs application/iges
.igs model/iges
.ima application/x-ima
.imap application/x-httpd-imap
.inf application/inf
.ins application/x-internett-signup
.ip application/x-ip2
.isu video/x-isvideo
.it audio/it
.iv application/x-inventor
.ivr i-world/i-vrml
.ivy application/x-livescreen
.jam audio/x-jam
.jav text/plain
.jav text/x-java-source
.java text/plain
.java text/x-java-source
.jcm application/x-java-commerce
.jfif image/jpeg
.jfif image/pjpeg
.jfif-tbnl image/jpeg
.jpe image/jpeg
.jpe image/pjpeg
.jpeg image/jpeg
.jpeg image/pjpeg
.jpg image/jpeg
.jpg image/pjpeg
.jps image/x-jps
.js application/x-javascript
.js application/javascript
.js application/ecmascript
.js text/javascript
.js text/ecmascript
.jut image/jutvision
.kar audio/midi
.kar music/x-karaoke
.ksh application/x-ksh
.ksh text/x-script.ksh
.la audio/nspaudio
.la audio/x-nspaudio
.lam audio/x-liveaudio
.latex application/x-latex
.lha application/lha
.lha application/octet-stream
.lha application/x-lha
.lhx application/octet-stream
.list text/plain
.lma audio/nspaudio
.lma audio/x-nspaudio
.log text/plain
.lsp application/x-lisp
.lsp text/x-script.lisp
.lst text/plain
.lsx text/x-la-asf
.ltx application/x-latex
.lzh application/octet-stream
.lzh application/x-lzh
.lzx application/lzx
.lzx application/octet-stream
.lzx application/x-lzx
.m text/plain
.m text/x-m
.m1v video/mpeg
.m2a audio/mpeg
.m2v video/mpeg
.m3u audio/x-mpequrl
.man application/x-troff-man
.map application/x-navimap
.mar text/plain
.mbd application/mbedlet
.mc$ application/x-magic-cap-package-1.0
.mcd application/mcad
.mcd application/x-mathcad
.mcf image/vasa
.mcf text/mcf
.mcp application/netmc
.me application/x-troff-me
.mht message/rfc822
.mhtml message/rfc822
.mid application/x-midi
.mid audio/midi
.mid audio/x-mid
.mid audio/x-midi
.mid music/crescendo
.mid x-music/x-midi
.midi application/x-midi
.midi audio/midi
.midi audio/x-mid
.midi audio/x-midi
.midi music/crescendo
.midi x-music/x-midi
.mif application/x-frame
.mif application/x-mif
.mime message/rfc822
.mime www/mime
.mjf audio/x-vnd.audioexplosion.mjuicemediafile
.mjpg video/x-motion-jpeg
.mm application/base64
.mm application/x-meme
.mme application/base64
.mod audio/mod
.mod audio/x-mod
.moov video/quicktime
.mov video/quicktime
.movie video/x-sgi-movie
.mp2 audio/mpeg
.mp2 audio/x-mpeg
.mp2 video/mpeg
.mp2 video/x-mpeg
.mp2 video/x-mpeq2a
.mp3 audio/mpeg3
.mp3 audio/x-mpeg-3
.mp3 video/mpeg
.mp3 video/x-mpeg
.mpa audio/mpeg
.mpa video/mpeg
.mpc application/x-project
.mpe video/mpeg
.mpeg video/mpeg
.mpg audio/mpeg
.mpg video/mpeg
.mpga audio/mpeg
.mpp application/vnd.ms-project
.mpt application/x-project
.mpv application/x-project
.mpx application/x-project
.mrc application/marc
.ms application/x-troff-ms
.mv video/x-sgi-movie
.my audio/make
.mzz application/x-vnd.audioexplosion.mzz
.nap image/naplps
.naplps image/naplps
.nc application/x-netcdf
.ncm application/vnd.nokia.configuration-message
.nif image/x-niff
.niff image/x-niff
.nix application/x-mix-transfer
.nsc application/x-conference
.nvd application/x-navidoc
.o application/octet-stream
.oda application/oda
.omc application/x-omc
.omcd application/x-omcdatamaker
.omcr application/x-omcregerator
.p text/x-pascal
.p10 application/pkcs10
.p10 application/x-pkcs10
.p12 application/pkcs-12
.p12 application/x-pkcs12
.p7a application/x-pkcs7-signature
.p7c application/pkcs7-mime
.p7c application/x-pkcs7-mime
.p7m application/pkcs7-mime
.p7m application/x-pkcs7-mime
.p7r application/x-pkcs7-certreqresp
.p7s application/pkcs7-signature
.part application/pro_eng
.pas text/pascal
.pbm image/x-portable-bitmap
.pcl application/vnd.hp-pcl
.pcl application/x-pcl
.pct image/x-pict
.pcx image/x-pcx
.pdb chemical/x-pdb
.pdf application/pdf
.pfunk audio/make
.pfunk audio/make.my.funk
.pgm image/x-portable-graymap
.pgm image/x-portable-greymap
.pic image/pict
.pict image/pict
.pkg application/x-newton-compatible-pkg
.pko application/vnd.ms-pki.pko
.pl text/plain
.pl text/x-script.perl
.plx application/x-pixclscript
.pm image/x-xpixmap
.pm text/x-script.perl-module
.pm4 application/x-pagemaker
.pm5 application/x-pagemaker
.png image/png
.pnm application/x-portable-anymap
.pnm image/x-portable-anymap
.pot application/mspowerpoint
.pot application/vnd.ms-powerpoint
.pov model/x-pov
.ppa application/vnd.ms-powerpoint
.ppm image/x-portable-pixmap
.pps application/mspowerpoint
.pps application/vnd.ms-powerpoint
.ppt application/mspowerpoint
.ppt application/powerpoint
.ppt application/vnd.ms-powerpoint
.ppt application/x-mspowerpoint
.ppz application/mspowerpoint
.pre application/x-freelance
.prt application/pro_eng
.ps application/postscript
.psd application/octet-stream
.pvu paleovu/x-pv
.pwz application/vnd.ms-powerpoint
.py text/x-script.phyton
.pyc applicaiton/x-bytecode.python
.qcp audio/vnd.qcelp
.qd3 x-world/x-3dmf
.qd3d x-world/x-3dmf
.qif image/x-quicktime
.qt video/quicktime
.qtc video/x-qtc
.qti image/x-quicktime
.qtif image/x-quicktime
.ra audio/x-pn-realaudio
.ra audio/x-pn-realaudio-plugin
.ra audio/x-realaudio
.ram audio/x-pn-realaudio
.ras application/x-cmu-raster
.ras image/cmu-raster
.ras image/x-cmu-raster
.rast image/cmu-raster
.rexx text/x-script.rexx
.rf image/vnd.rn-realflash
.rgb image/x-rgb
.rm application/vnd.rn-realmedia
.rm audio/x-pn-realaudio
.rmi audio/mid
.rmm audio/x-pn-realaudio
.rmp audio/x-pn-realaudio
.rmp audio/x-pn-realaudio-plugin
.rng application/ringing-tones
.rng application/vnd.nokia.ringing-tone
.rnx application/vnd.rn-realplayer
.roff application/x-troff
.rp image/vnd.rn-realpix
.rpm audio/x-pn-realaudio-plugin
.rt text/richtext
.rt text/vnd.rn-realtext
.rtf application/rtf
.rtf application/x-rtf
.rtf text/richtext
.rtx application/rtf
.rtx text/richtext
.rv video/vnd.rn-realvideo
.s text/x-asm
.s3m audio/s3m
.saveme application/octet-stream
.sbk application/x-tbook
.scm application/x-lotusscreencam
.scm text/x-script.guile
.scm text/x-script.scheme
.scm video/x-scm
.sdml text/plain
.sdp application/sdp
.sdp application/x-sdp
.sdr application/sounder
.sea application/sea
.sea application/x-sea
.set application/set
.sgm text/sgml
.sgm text/x-sgml
.sgml text/sgml
.sgml text/x-sgml
.sh application/x-bsh
.sh application/x-sh
.sh application/x-shar
.sh text/x-script.sh
.shar application/x-bsh
.shar application/x-shar
.shtml text/html
.shtml text/x-server-parsed-html
.sid audio/x-psid
.sit application/x-sit
.sit application/x-stuffit
.skd application/x-koan
.skm application/x-koan
.skp application/x-koan
.skt application/x-koan
.sl application/x-seelogo
.smi application/smil
.smil application/smil
.snd audio/basic
.snd audio/x-adpcm
.sol application/solids
.spc application/x-pkcs7-certificates
.spc text/x-speech
.spl application/futuresplash
.spr application/x-sprite
.sprite application/x-sprite
.src application/x-wais-source
.ssi text/x-server-parsed-html
.ssm application/streamingmedia
.sst application/vnd.ms-pki.certstore
.step application/step
.stl application/sla
.stl application/vnd.ms-pki.stl
.stl application/x-navistyle
.stp application/step
.sv4cpio application/x-sv4cpio
.sv4crc application/x-sv4crc
.svf image/vnd.dwg
.svf image/x-dwg
.svr application/x-world
.svr x-world/x-svr
.swf application/x-shockwave-flash
.t application/x-troff
.talk text/x-speech
.tar application/x-tar
.tbk application/toolbook
.tbk application/x-tbook
.tcl application/x-tcl
.tcl text/x-script.tcl
.tcsh text/x-script.tcsh
.tex application/x-tex
.texi application/x-texinfo
.texinfo application/x-texinfo
.text application/plain
.text text/plain
.tgz application/gnutar
.tgz application/x-compressed
.tif image/tiff
.tif image/x-tiff
.tiff image/tiff
.tiff image/x-tiff
.tr application/x-troff
.tsi audio/tsp-audio
.tsp application/dsptype
.tsp audio/tsplayer
.tsv text/tab-separated-values
.turbot image/florian
.txt text/plain
.uil text/x-uil
.uni text/uri-list
.unis text/uri-list
.unv application/i-deas
.uri text/uri-list
.uris text/uri-list
.ustar application/x-ustar
.ustar multipart/x-ustar
.uu application/octet-stream
.uu text/x-uuencode
.uue text/x-uuencode
.vcd application/x-cdlink
.vcs text/x-vcalendar
.vda application/vda
.vdo video/vdo
.vew application/groupwise
.viv video/vivo
.viv video/vnd.vivo
.vivo video/vivo
.vivo video/vnd.vivo
.vmd application/vocaltec-media-desc
.vmf application/vocaltec-media-file
.voc audio/voc
.voc audio/x-voc
.vos video/vosaic
.vox audio/voxware
.vqe audio/x-twinvq-plugin
.vqf audio/x-twinvq
.vql audio/x-twinvq-plugin
.vrml application/x-vrml
.vrml model/vrml
.vrml x-world/x-vrml
.vrt x-world/x-vrt
.vsd application/x-visio
.vst application/x-visio
.vsw application/x-visio
.w60 application/wordperfect6.0
.w61 application/wordperfect6.1
.w6w application/msword
.wav audio/wav
.wav audio/x-wav
.wb1 application/x-qpro
.wbmp image/vnd.wap.wbmp
.web application/vnd.xara
.wiz application/msword
.wk1 application/x-123
.wmf windows/metafile
.wml text/vnd.wap.wml
.wmlc application/vnd.wap.wmlc
.wmls text/vnd.wap.wmlscript
.wmlsc application/vnd.wap.wmlscriptc
.word application/msword
.wp application/wordperfect
.wp5 application/wordperfect
.wp5 application/wordperfect6.0
.wp6 application/wordperfect
.wpd application/wordperfect
.wpd application/x-wpwin
.wq1 application/x-lotus
.wri application/mswrite
.wri application/x-wri
.wrl application/x-world
.wrl model/vrml
.wrl x-world/x-vrml
.wrz model/vrml
.wrz x-world/x-vrml
.wsc text/scriplet
.wsrc application/x-wais-source
.wtk application/x-wintalk
.xbm image/x-xbitmap
.xbm image/x-xbm
.xbm image/xbm
.xdr video/x-amt-demorun
.xgz xgl/drawing
.xif image/vnd.xiff
.xl application/excel
.xla application/excel
.xla application/x-excel
.xla application/x-msexcel
.xlb application/excel
.xlb application/vnd.ms-excel
.xlb application/x-excel
.xlc application/excel
.xlc application/vnd.ms-excel
.xlc application/x-excel
.xld application/excel
.xld application/x-excel
.xlk application/excel
.xlk application/x-excel
.xll application/excel
.xll application/vnd.ms-excel
.xll application/x-excel
.xlm application/excel
.xlm application/vnd.ms-excel
.xlm application/x-excel
.xls application/excel
.xls application/vnd.ms-excel
.xls application/x-excel
.xls application/x-msexcel
.xlt application/excel
.xlt application/x-excel
.xlv application/excel
.xlv application/x-excel
.xlw application/excel
.xlw application/vnd.ms-excel
.xlw application/x-excel
.xlw application/x-msexcel
.xm audio/xm
.xml application/xml
.xml text/xml
.xmz xgl/movie
.xpix application/x-vnd.ls-xpix
.xpm image/x-xpixmap
.xpm image/xpm
.x-png image/png
.xsr video/x-amt-showrun
.xwd image/x-xwd
.xwd image/x-xwindowdump
.xyz chemical/x-pdb
.z application/x-compress
.z application/x-compressed
.zip application/x-compressed
.zip application/x-zip-compressed
.zip application/zip
.zip multipart/x-zip
.zoo application/octet-stream
.zsh text/x-script.zsh
Leia Mais ››