Pequena função javascript para validar a extensão do arquivo.
Versões atualizadas deste script
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
Validação de CPF e CNPJ no mesmo campo em javascript
isNumber
Ajax - Exemplo Super Simples
Função Javascript simples para validação de CPFs
Autofoco no primeiro campo de um formulário
Comentários
Bom código, parabéns! Só não entendi esse argumento tipo aí da função.
Obrigado! Na verdade esse argumento "tipo" era pra uma outra coisa que eu estava testando e acabei de esquecendo de remover, hehehe.
[]s
Mensagem
Obrigado! Na verdade esse argumento "tipo" era pra uma outra coisa que eu estava testando e acabei de esquecendo de remover, hehehe.
[]s
Bacana esse código!! Mas aonde eu coloco a função dentro do HTML??
Valeus!!
Mensagem
Bacana esse código!! Mas aonde eu coloco a função dentro do HTML??
Valeus!!
Mensagem
Implementação da função: http://matheusrosa.com.br/midias/valida-extensao.html
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"]);
Mensagem
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
Enviar