Com o HTML, como limite o tipo de arquivo que pode ser carregado?
Para facilitar a experiência do usuário, desejo limitar o upload de arquivos a serem apenas imagens (jpeg, gif, png).
<form method="post" action="..." enctype="multipart/form-data">
<label for="image">Photo</label>
<input name="image" type="file" />
</form>
html
image
upload
file-upload
JacobT
fonte
fonte
Respostas:
HTML5 diz
<input type="file" accept="image/*">
. Obviamente, nunca confie na validação do lado do cliente: sempre verifique novamente no lado do servidor ...fonte
A entrada do arquivo HTML5 possui atributo de aceitação e também vários atributos. Usando vários atributos, você pode fazer upload de várias imagens em uma instância.
Você também pode limitar vários tipos de mímica.
e outra maneira de verificar o tipo mime usando o objeto file.
O objeto de arquivo fornece nome, tamanho e tipo.
Você também pode restringir o usuário para que alguns tipos de arquivos sejam carregados pelo código acima.
fonte
image/*|audio/*|video/*
não funciona para mim, deve ser separados por vírgula que parece:image/*,video/mp4,.txt
Editado
Se as coisas eram como deveriam ser, você poderia fazer isso através do atributo "Aceitar".
http://www.webmasterworld.com/forum21/6310.htm
No entanto, os navegadores praticamente ignoram isso, então isso é irrelavante. A resposta curta é: não acho que exista uma maneira de fazer isso em HTML. Você teria que verificar no lado do servidor.
A postagem anterior a seguir contém algumas informações que podem ajudá-lo com alternativas.
Atributo de entrada 'aceitar' do arquivo - é útil?
fonte
Aqui está o HTML para o upload de imagens. Por padrão, ele mostra arquivos de imagem apenas na janela de navegação, porque nós colocamos
accept="image/*"
. Mas ainda podemos alterá-lo no menu suspenso e ele mostra todos os arquivos. Portanto, a parte Javascript valida se o arquivo selecionado é ou não uma imagem real.Aqui no evento de mudança, primeiro verificamos o tamanho da imagem. E na segunda
if
condição, verificamos se é ou não um arquivo de imagem.this.files[0].type.indexOf("image")
será-1
se não for um arquivo de imagem.fonte
Você só pode fazer isso com segurança no lado do servidor. O uso do atributo "accept" é bom, mas também deve ser validado no servidor para que os usuários não possam fazer cursagem no seu script sem essa limitação.
Sugiro que você: descarte qualquer arquivo que não seja de imagem, avise o usuário e exiba novamente o formulário.
fonte
Agora na parte html
esse código verificará se o arquivo enviado é um arquivo jpg ou não e restringe o upload de outros tipos
fonte
Por fim, o filtro que é exibido na janela Procurar é definido pelo navegador. Você pode especificar todos os filtros que deseja no atributo Aceitar, mas não tem garantia de que o navegador do usuário adira a ele.
Sua melhor aposta é fazer algum tipo de filtragem no back-end no servidor.
fonte
Faça o checkout de um projeto chamado Uploadify. http://www.uploadify.com/
É um carregador de arquivos baseado em Flash + jQuery. Isso usa a caixa de diálogo de seleção de arquivos do Flash, que permite filtrar tipos de arquivos, selecionar vários arquivos ao mesmo tempo, etc.
fonte