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
Contador de acessos
Ajax - Exemplo Super Simples
Seleccionar tudo
JSOO - Trabalhar o checkbox com javascript
Máscara de celular com 8 ou 9 dígitos
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