Sobre este problema HTML
O atributo accept fornece aos navegadores uma dica sobre quais tipos de ficheiro o utilizador deve poder selecionar através da caixa de diálogo de seleção de ficheiros. Embora os navegadores ainda possam permitir que os utilizadores selecionem outros tipos de ficheiro, o atributo ajuda a filtrar o seletor de ficheiros para mostrar primeiro os ficheiros relevantes, melhorando a experiência do utilizador.
O validador W3C reporta este erro quando encontra tokens no atributo accept que não estão em conformidade com o formato esperado. O valor do atributo é analisado como um conjunto de tokens separados por vírgulas, e cada token deve ser um dos seguintes:
-
Um tipo MIME válido como
application/pdf,text/plain, ouimage/png(o carácter/que separa o tipo e subtipo é obrigatório). -
Uma extensão de ficheiro que comece com um ponto, como
.pdf,.docx, ou.jpg. -
Um dos três tipos MIME wildcard:
audio/*,video/*, ouimage/*.
Erros comuns que desencadeiam este erro incluem usar extensões de ficheiro isoladas sem o ponto inicial (por exemplo, pdf em vez de .pdf), usar palavras arbitrárias que não são tipos MIME válidos, ou incluir espaços de uma forma que cria tokens malformados. A especificação HTML (WHATWG) define regras rigorosas sobre como estes tokens são analisados, e violá-las produz um erro de validação.
Acertar neste atributo é importante por várias razões. Primeiro, um atributo accept corretamente especificado ajuda os utilizadores ao pré-filtrar o seletor de ficheiros, para que não tenham de procurar entre ficheiros não relacionados. Segundo, as tecnologias de apoio podem usar este atributo para comunicar aos utilizadores os tipos de ficheiro aceites. Terceiro, alguns navegadores podem ignorar silenciosamente um valor accept malformado inteiramente, removendo o comportamento de filtragem útil que você pretendia.
Para corrigir o problema, reveja cada token no seu atributo accept e garanta que corresponde a um dos três formatos válidos listados acima. Se não tem certeza sobre o tipo MIME correto para um formato de ficheiro, consulte o registo de Tipos de Media IANA. Em caso de dúvida, extensões de ficheiro prefixadas com ponto (como .pdf ou .docx) são frequentemente mais simples e legíveis.
Exemplos
Incorreto: palavras isoladas sem pontos ou formato de tipo MIME
<input type="file" name="document" accept="doc, docx, pdf">
Os tokens doc, docx, e pdf não são nem tipos MIME válidos (sem /) nem extensões de ficheiro válidas (sem . inicial), por isso o validador rejeita-os.
Incorreto: espaços criando tokens malformados
<input type="file" name="photo" accept="image/png, image/jpeg">
Embora a maioria dos navegadores lidem graciosamente com espaços após vírgulas, o validador pode sinalizar isto dependendo da análise. É mais seguro evitar espaços ou mantê-los mínimos.
Correto: usar extensões de ficheiro prefixadas com ponto
<input type="file" name="document" accept=".doc,.docx,.pdf">
Correto: usar tipos MIME válidos
<input type="file" name="document" accept="application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/pdf">
Correto: misturar tipos MIME, extensões e wildcards
<input type="file" name="media" accept="image/*,.pdf,video/mp4">
Isto aceita todos os tipos de imagem, ficheiros PDF, e vídeos MP4. Misturar formatos é perfeitamente válido desde que cada token individualmente esteja em conformidade com a especificação.
Correto: usar tipos MIME wildcard para categorias amplas
<input type="file" name="photo" accept="image/*">
Isto permite ao utilizador selecionar qualquer ficheiro de imagem, independentemente do formato específico.
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.
Saiba mais: