Validar extensão de arquivo

Publicado por Matheus (última atualização em 09/08/2010)

[ Hits: 19.965 ]

Homepage: matheusrosa.com.br

Download validaFormato.js

Download 1280433174.validaFormato.js (versão 2)

Download 1280491240.validaFormato.js (versão 3)




Pequena função javascript para validar a extensão do arquivo.

  



Versões atualizadas deste script

Versão 2 - Enviado por Matheus em 29/07/2010

Changelog: Removido o argumento "tipo" da função.

Download 1280433174.validaFormato.js


Versão 3 - Enviado por Bruno Nascimento em 30/07/2010

Changelog: Pequena função javascript para validar a extensão do arquivo.

Download 1280491240.validaFormato.js


Esconder código-fonte

/**
* Autor: Matheus Rosa <matheus.sys@gmail.com>
* Data: 21/07/2010
* Descrição: Valida um arquivo através da extensão
*/

function validoFormato(arquivo, tipo){
    var extensoes, ext, valido;
        extensoes = new Array('.odt','.pdf','.doc');
    
    ext = arquivo.substring(arquivo.lastIndexOf(".")).toLowerCase();
    valido = false;
    
    for(var i = 0; i <= arquivo.length; i++){
        if(extensoes[i] == ext){
            valido = true;
            break;
        }
    }
     
    if(valido){
        return true;
    }

  return false;
}

Scripts recomendados

Simples Form

Contador de acessos

isCPFCNPJ

Conta o número de caracteres digitados e informa o restante

Prova


  

Comentários
[1] Comentário enviado por andre227 em 29/07/2010 - 16:26h

Bom código, parabéns! Só não entendi esse argumento tipo aí da função.

[2] Comentário enviado por matheusrosa em 29/07/2010 - 16:55h

Obrigado! Na verdade esse argumento "tipo" era pra uma outra coisa que eu estava testando e acabei de esquecendo de remover, hehehe.

[]s

[3] Comentário enviado por piccininsouza em 04/08/2010 - 11:41h

Bacana esse código!! Mas aonde eu coloco a função dentro do HTML??
Valeus!!

[4] Comentário enviado por matheusrosa em 04/08/2010 - 14:30h

Implementação da função: http://matheusrosa.com.br/midias/valida-extensao.html

[5] Comentário enviado por thadeudepaula em 05/08/2010 - 00:18h

Erro de lógica: você fez o length no "for" sobre a variável "arquivo" em vez de em "extensoes". Sempre vai funcionar por que o nome do arquivo, com a extensão, sempre precisa ser maior que 3 caracteres. Mas se seu array de extensões fosse maior teria um grande problema... ;)

Poderia ser mais maleável e também utilizar expressão regular:

// @param file - nome do arquivo
// @param types - array contendo todas as possíveis extensões
// @return - boleano TRUE ou FALSE
function validoFormato(file,types) {
// Se "types" for string, transforma em array
var types = typeof(types) == "string" ? [types] : types,
fileExtension = file.replace(/.*\.([^.]+)$/,"$1").toLowerCase(); // Pega extensão com RegExp
for (var e in types) if (types[e].toLowerCase() == fileExtension) return true;
return false;
}

Exemplos de uso:

// Retorna false
validoFormato("documento.pdf","txt");

// Retorna true
validoFormato("documento.txt","txt");

// Retorna false
validoFormato("documento.pdf",["txt","odt","sxw"]);

// Retorna true
validoFormato("documento.odt",["txt","odt","sxw"]);


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts