Input File com validação (Resolvido por Vitor Augusto)

Nobres,

As duas primeiras linhas do código anexado eu coloquei dentro do script da página gerada pelo Esp32 para carregar códigos via Web Server.

As demais linhas são o código de validação. Ou seja, eu pretendo que só aceite carregar no Input File arquivos com a extensão .bin (para fazer atualização quando necessário). Depois eu vou restringir a somente .bin comentando as demais extensões.

Mas não está compilando pois está dando o erro que digitei na última linha.

Alguém consegue corrigir ?

GRATO

Exibições: 328

Anexos

Responder esta

Respostas a este tópico

Bom dia, Sérgio.

O código de validação deve estar dentro da página gerada porque a validação é feita no navegador. Além disso, a função está escrita em sintaxe javascript por isso os erros de compilação se você estiver compilando como se fosse código Arduino.

Tinham mais alguns errros que corrigi no arquivo anexo.

Anexos

Bom dia Vitor, desculpa minha ignorância mas como eu faço para ver o código deste html ? cliquei nele e abriu uma página de input file, cliquei em escolher arquivo e ele abriu o explorer porém não limitando a arquivos .bin mas sim a todos os arquivos (qualquer arquivo). Eu pretendo limitar a .bin, a nome específico e tamanho.

Precisa clicar no botão direito do mouse e escolher a opção "salvar como..."

Para aceitar apenas .bin, é só colocar como a seguir em "accept".

accept=".bin"

Eu salvei antes assim como você disse, mas ao clicar nele já na pasta abre direto o google chorme e não o código, daí clico em inspecionar, mas vejo apenas um código com umas três linhas

Tô tentando aqui mas não tenho botão <abrir>

https://editorhtmlonline.clevert.com.br/html.php

É só clicar com o botão direito do mouse no arquivo e abrir como texto. Ou abrir o editor de texto e chamar o arquivo pelo editor de texto. Ou renomear o arquivo para html.txt.

Aí sim Dr. Muito obrigado. Vou seguir aqui e ver se consigo avançar com este seu código. Forte abraço.

Consegui embutir o código na char, veja em anexo.

Porém não mudou muito na prática. Ao clicar no botão do input file ele está aceitando qualquer arquivo.bin

Note que no bloco function handleFileInput(event) há um if que restringe arquivos maiores que 200Kb, não deveria aceitar. E eu também gostaria de pôr um file.name para que só aceitasse arquivos que tivesse um nome igual ao nome que eu colocar no código.

Tem jeito ?

Grato

Anexos

Se ignorarmos aquele bloco function handleFileInput(event) e colocarmos direto lá em cima na linha do input file, acrescentarmos: name = 'atualizar' e também um size  = '200000'

Não dá certo ?

O filtro de tipo do input file restringe apenas a extensão dos arquivos. Então todos os .bin irão aparecer. Posteriormente, no javascript, é onde se faz um filtro mais restrito.

O arquivo anexo está com filtro de size e nome igual ao que se especificar: "b.bin", por exemplo. Se o arquivo escolhido não estiver de acordo, a linha event.value = "" apaga a escolha. Assim, apenas o arquivo certo é escolhido.

Anexos

Bom dia Vitor, veja o print em anexo.

Se eu não comentar a linha do "event.value = "";" ele rejeita todos os arquivos, até o b.bin

Se eu comentar esta linha desativando esta função ele aceita todos os arquivos. Note que eu tirei para testes o filtro do tamanho do arquivo, deixei apenas o nome. E veja que aqui todo o código faz parte de um CHAR e por isso onde tinha aspas duplas tive que pôr aspas simples senão não compilava. Não sei se isso atrapalha pois o nome b.bin ficou entre aspas simples.

À propósito, como eu faço para mudar a cor do fundo e cor do texto dos botões <escolher arquivo> e <enviar>

Eu entendi a lógica deste seu último código, deve ser alguma bobagem que esteja impedindo o correto funcionamento.

Anexos

Bom dia, Sérgio.

Uma primeira observação é que a linha comentada está sendo enviada assim para o navegador

event.value = ;

porque as aspas duplas internas estão sendo interpretadas diferente do que deveria. Precisa corrigir para aspas simples internamente como a seguir. Obs.: em javascript, aspas simples ou duplas são equivalentes em conteúdo mas são diferentes na sintaxe do código.

"event.value = '';"

Outra observação é que não aparece a tag <script> antes da "function" nessa imagem que você enviou. Precisa desta tag se não tiver.

Vamos ver se corrigindo essas observações funciona porque o código em "html.txt" que eu enviei está funcionando em 3 navegadores diferentes.

Quanto às cores, pode seguir pelas orientações do link a seguir (em inglês) via CSS.

https://www.educative.io/answers/how-you-can-style-the-input-file-t...

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço