Na verdade, você não tem acesso ao sistema de arquivos (por exemplo, leitura e gravação de arquivos locais); no entanto, devido à especificação da API do arquivo HTML5, existem algumas propriedades de arquivo às quais você tem acesso e o tamanho do arquivo é uma delas.
Para o HTML abaixo
<input type="file" id="myFile" />
tente o seguinte:
//binds to onchange event of your input field
$('#myFile').bind('change', function() {
//this.files[0].size gets the size of your file.
alert(this.files[0].size);
});
Como faz parte da especificação HTML5, ele funcionará apenas para navegadores modernos (é necessária a v10 necessária para o IE) e adicionei aqui mais detalhes e links sobre outras informações de arquivo que você deve saber: http://felipe.sabino.me/javascript / 2012/01/30 / javascipt-check-the-file-size /
Suporte a navegadores antigos
Esteja ciente de que navegadores antigos retornarão um null
valor para a this.files
chamada anterior ; portanto, o acesso this.files[0]
gerará uma exceção e você deverá verificar o suporte à API de arquivos antes de usá-lo
jQuery
arquivo javascript não foi adicionado (ou não foi carregado corretamente). Você o adicionou nahead
sua página?Se você deseja usar o jQuery,
validate
pode criar este método:Você usaria:
fonte
accept
regra incorretamente , onde deveria ter usado aextension
regra. ~ Aaccept
regra é apenas para tipos MIME. Aextension
regra é para extensões de arquivo. Você também precisa incluir oadditional-methods.js
arquivo para essas regras.$('#formid').validate({ rules: { inputimage: { required: true, extension: "png|jpe?g|gif", filesize: 1048576 }}, messages: { inputimage: "File must be JPG, GIF or PNG, less than 1MB" } });
Este código:
Retorna o tamanho do arquivo para uma entrada de formulário.
No FF 3.6 e posterior, esse código deve ser:
fonte
Também estou postando minha solução, usada para um
FileUpload
controle ASP.NET . Talvez alguém ache útil.fonte
f = this.files[0]
ou isso falhará em navegadores mais antigos. por exemploif (f && (f.size > 8388608 || f.fileSize > 8388608))
Use abaixo para verificar o tamanho do arquivo e limpar se é maior,
fonte
Você pode fazer esse tipo de verificação com Flash ou Silverlight, mas não com Javascript. A sandbox javascript não permite acesso ao sistema de arquivos. A verificação do tamanho precisaria ser feita no lado do servidor após o upload.
Se você quiser seguir a rota do Silverlight / Flash, verifique se eles não estão instalados como padrão para um manipulador de upload de arquivo comum que usa os controles normais. Dessa forma, se o Silverlight / Flash estiver instalado, a experiência será um pouco mais rica.
fonte
Achei isso mais fácil se você não planeja enviar o formulário por meio de métodos padrão ajax / html5, mas é claro que funciona com qualquer coisa.
NOTAS:
Isso costumava funcionar, mas não funciona mais no chrome, apenas testei o código acima e funcionou no ff e no chrome (ultimo). O segundo ["0"] agora é firstChild.
fonte
Por favor, tente o seguinte:
fonte