Como corrigir a falha de upload de arquivos no WPForms
O que é o upload de arquivo no WPForms que não funciona?
O campo File Upload do WPForms permite que o visitante anexe arquivos ao enviar um formulário, como um currículo, uma foto ou um PDF. Por padrão os arquivos ficam em wp-content/uploads/wpforms/ ou na Biblioteca de Mídia, se essa opção estiver ligada. A falha de upload acontece quando o arquivo e barrado na validação do campo (tipo ou tamanho) ou quando o envio via AJAX do estilo Moderno não completa, e o formulário para no botão de enviar sem registrar a entrada.
Como identificar
- Ao escolher o arquivo aparece a mensagem ‘File type is not allowed’ (ou ‘Tipo de arquivo não permitido’) logo abaixo do campo File Upload.
- Ao tentar enviar surge ‘File exceeds the max size allowed’ ou ‘O arquivo excede o tamanho máximo permitido’, mesmo com um arquivo aparentemente pequeno.
- No estilo Moderno (arrastar e soltar) a barra de progresso trava em meio caminho e o formulário nunca passa do botão Enviar.
- O formulário envia, mas a entrada chega em WPForms -> Entradas sem o anexo, ou o link do arquivo aponta para um arquivo de 0 KB.
Como prevenir
- Restrinja a lista de extensões ao mínimo necessário e nunca inclua tipos executaveis como php, phtml, phar ou svg
- Defina o Max File Size do campo com folga abaixo do limite real do servidor para o visitante receber a mensagem do WPForms, e não um erro 413 cru do servidor
- Teste cada formulário com upload como visitante anonimo, em HTTPS e no celular, após atualizar o WPForms, o tema ou o plugin de cache
Causa
- Extensão do arquivo fora da lista do campo File Upload (padrão do WPForms: png, gif, jpg, doc, xls, ppt, pdf, wav, mp3, mp4, mpg, mov, wmv); enviar um zip, csv ou heic sem adicionar a extensão em Allowed File Extensions barra o upload.
- Arquivo acima do limite do servidor: o campo Max File Size do WPForms herda o teto de upload_max_filesize e post_max_size do PHP, e um arquivo maior que esse valor (tipico 2M ou 8M em hospedagem compartilhada) e rejeitado na validação.
- Estilo Moderno (AJAX, arrastar e soltar) falhando por conteúdo misto: o site carrega via HTTPS mas o WPForms aponta um asset em HTTP, e o navegador bloqueia a requisicao do upload.
- Estilo Moderno aberto no Safari ou em navegador interno de app (Instagram, Facebook), que não completam o upload por arrastar e soltar e precisam do estilo Classico.
- Pasta wp-content/uploads/wpforms/ sem permissão de escrita (diferente de 0755 nas pastas) ou um WAF/Cloudflare cortando o POST acima de 100 MB antes de chegar ao PHP.
Como resolver
- Libere a extensão do arquivo no campo: Abra o formulário no WPForms, clique no campo File Upload e, em Opções de Campo, ajuste a lista de extensões permitidas separadas por virgula. Inclua a extensão que o visitante precisa enviar sem espacos extras.
Allowed File Extensions: jpg,jpeg,png,pdf,doc,docx,zip - Confira o limite de tamanho do campo e do servidor: Ainda no campo File Upload, veja o tooltip do Max File Size: ele mostra o teto definido pelo servidor. Se o limite real for baixo, defina um valor menor ou igual ao do servidor e peca ao seu host para elevar as diretivas do PHP.
Max File Size do campo: 10 (MB) Teto do servidor exibido no tooltip = upload_max_filesize do PHP - Troque o estilo de upload para Classico ao depurar: No campo File Upload, abra a aba Avancado e mude o Style de Moderno para Classico. O estilo Classico usa o botão Escolher arquivo e dispensa o AJAX e o arrastar e soltar, o que contorna falhas no Safari e em navegadores internos de apps.
Campo File Upload -> Avancado -> Style: Classico - Verifique HTTPS e conteúdo misto: Abra o formulário, pressione F12 e va na aba Console. Se houver aviso de Mixed Content apontando um asset em HTTP numa página HTTPS, corrija a URL do site para HTTPS em Configurações para destravar o upload via AJAX do estilo Moderno.
Painel WP -> Configurações -> Geral -> Endereco do site (URL): https:// - Cheque a permissão da pasta de uploads: Via FTP ou gerenciador de arquivos, confirme que a pasta de uploads do WPForms existe e tem permissão de escrita. Sem escrita, o arquivo e recebido mas não e gravado, e a entrada chega sem o anexo.
chmod 0755 wp-content/uploads/wpforms Caminho da pasta: wp-content/uploads/wpforms/
# .htaccess na raiz do WordPress (servidor Apache)
# Eleva o teto de upload do PHP para o WPForms aceitar arquivos maiores.
# O Max File Size do campo nunca pode passar destes valores.
php_value upload_max_filesize 32M
php_value post_max_size 36M
php_value max_execution_time 300
php_value max_input_time 300














