Como corrigir o erro de upload de arquivos no WPForms
O que é erro de upload de arquivos no WPForms?
O campo File Upload do WPForms permite que o visitante anexe arquivos no envio do formulário. Quando esse envio falha, o arquivo não chega ao servidor e a entrada fica sem o anexo, ou o formulário nem conclui o envio. A falha quase sempre vem de três camadas: a configuração do próprio campo (extensões permitidas e tamanho máximo), os limites de PHP do servidor que valem para qualquer upload do site, e a lista permanente de extensões perigosas que o WPForms bloqueia do lado do formulário, independente do que o WordPress core libere.
Como identificar
- Mensagem ‘File exceeds the max size allowed’ ou ‘file exceeds the maximum upload size for this website’ exibida abaixo do campo File Upload no momento do envio.
- Mensagem ‘File type is not allowed’ ao tentar anexar um arquivo cuja extensão não esta na lista permitida do campo.
- No estilo Modern, a barra de progresso do arquivo trava em ‘Processando’ ou volta a zero e o botão de envio fica desabilitado.
- O formulário envia sem erro visivel, mas a entrada em WPForms -> Entradas chega sem o anexo e a notificação por email vem sem o arquivo prometido.
Como prevenir
- Mantenha o campo Allowed File Extensions explicito com apenas os tipos que o formulário realmente precisa, em vez de deixar aberto.
- Documente o teto real de upload do servidor com o seu provedor e alinhe o Max File Size do campo um pouco abaixo desse teto.
- Nunca tente liberar extensões executaveis para contornar a denylist do WPForms; ela existe para impedir upload de código malicioso.
- Sempre que ajustar plugin de cache ou CDN, exclua as páginas com formulários e revalide um envio de teste com anexo.
Causa
- A extensão do arquivo não consta no campo 'Allowed File Extensions' das opções do File Upload (lista de extensões separadas por virgula); qualquer extensão fora dela e recusada com 'File type is not allowed'.
- O arquivo ultrapassa o valor do campo 'Max File Size' ou o limite de PHP do servidor (upload_max_filesize e post_max_size); por padrão o campo herda o teto do servidor mostrado no icone de ajuda ao lado da opção Max File Size.
- A extensão esta na denylist permanente do WPForms (.php, .exe, .js, .jar, .html, .htm, .swf, .json), que e bloqueada do lado do formulário mesmo que o WordPress core libere o tipo.
- O estilo Modern (drag-and-drop, com upload por AJAX) esta com o campo 'Max File Number' menor que a quantidade de arquivos que o visitante anexa, entao os arquivos extras são recusados.
- Um plugin de cache (como o WP Rocket) ou um CDN serve uma versão estática antiga do formulário, deixando o token de segurança do WPForms defasado e fazendo o upload por AJAX falhar silenciosamente.
Como resolver
- Libere a extensão no próprio campo: No construtor do formulário, clique no campo File Upload e abra Field Options. No campo Allowed File Extensions, liste as extensões permitidas separadas por virgula, cada uma com ponto inicial. Salve e teste com o mesmo tipo de arquivo que falhava.
.pdf, .docx, .jpg, .png, .heic - Confirme o teto do campo e do servidor: Ainda em Field Options, passe o mouse no icone de ajuda ao lado de Max File Size para ver o teto que o servidor permite. Defina um número menor ou igual a esse teto. Se precisar de mais, eleve os limites de PHP via php.ini (ou via .htaccess no Apache) e reinicie o PHP.
upload_max_filesize = 64M post_max_size = 64M max_execution_time = 300 - Respeite a denylist permanente do WPForms: Se o arquivo for de uma extensão executavel, ele e recusado de proposito pelo WPForms por segurança, e isso não deve ser contornado. Oriente o visitante a compactar o arquivo num formato seguro antes de enviar.
.php, .exe, .js, .jar, .html, .htm, .swf, .json - Exclua o formulário do cache: Se o upload por AJAX falha so para alguns visitantes, limpe todo o cache do site e do CDN e adicione a página do formulário a lista de exclusão do plugin de cache, para que o token de segurança seja sempre gerado fresco.
/contato/ /(.*)formulário(.*)/
// wp-content/mu-plugins/wpforms-upload-limit.php
// Sobe o teto de upload SO nas paginas que tem o WPForms,
// mantendo o resto do site no limite padrao do servidor.
add_filter( 'upload_size_limit', function ( $bytes ) {
if ( function_exists( 'wpforms_current_form_has_field' ) ) {
return 64 * 1024 * 1024; // 64 MB em bytes
}
return $bytes;
} );














