Processamento de vários arquivos com HTML5
-
12-12-2019 - |
Pergunta
Eu me sinto um pouco idiota postando isso, como parece muito para a frente pelo que andei lendo, mas eu não sei porque eu estou sempre vendo 1
como o valor para files.length
.
<html>
<head>
<script src="http://code.jquery.com/jquery-1.7.2.js" type="text/javascript"></script>
<script>
$(document).ready(function() {
var button = $('#button');
button.click(function(){
var files = $('#files');
alert(files.length);
});
});
</script>
</head>
<body>
<form>
<input type="file" id="files" multiple="" />
<input type="button" id="button" value="Upload" />
</form>
</body>
</html>
Solução
Alterar a linha de alerta para:
alert(files[0].files.length);
Isso funciona porque o que você está tentando fazer é obter os arquivos de atributo de entrada do elemento DOM que é o FileList objecto.Em seguida, você deseja que o atributo de comprimento do FileList que irá dizer-lhe quantos objetos foram selecionados.Você primeiro selecionar o elemento input com o jQuery, no entanto, o resultado de um fórum selecção como $("#arquivos") é uma biblioteca de jQuery coleção, você quer subjacente objeto DOM para o elemento de entrada, porque apenas os que tem os arquivos de atributo.Cada objeto jQuery se disfarça como uma Matriz, então você pode utilizar o padrão de matriz de referência para obter subjacente elemento DOM.(Veja: http://api.jquery.com/get/ )