Como corrigir a falha de upload de arquivos no JetFormBuilder
O que é falha de upload de arquivos no JetFormBuilder?
O JetFormBuilder upload falha no envio quando o campo Media Field bloqueia o arquivo do visitante. Esse campo adiciona ao formulário um botão para enviar um arquivo do computador para o WordPress. Segundo a documentação da Crocoblock, o arquivo enviado fica em uma pasta protegida do próprio JetFormBuilder e, com o toggle Insert attachment ligado, pode ser registrado na Biblioteca de Mídia. O campo tem quatro controles que decidem se o envio passa ou e bloqueado: ALLOW MIME TYPES, MAXIMUM SIZE IN MB, MAXIMUM ALLOWED FILES TO UPLOAD e USER ACCESS.
A falha de upload aparece quando uma dessas regras barra o arquivo: o tipo não esta na lista de MIME permitidos, o arquivo passa do tamanho em MB, o número de arquivos ultrapassa o máximo, ou o visitante não tem a permissão definida em USER ACCESS. Acima do campo ainda existem os limites do próprio servidor PHP (upload_max_filesize e post_max_size), que rejeitam o arquivo antes mesmo de o JetFormBuilder validar. O resultado e o formulário que não envia, com mensagem de erro no campo ou falha silenciosa no submit.
Como identificar
- Ao enviar o formulário, o campo de upload mostra a mensagem ‘File size limit exceeded’ (limite de tamanho de arquivo excedido) e o submit não conclui.
- Aparece ‘Files limit exceeded’ (limite de arquivos excedido) quando o visitante tenta anexar mais arquivos do que o configurado no campo.
- O arquivo e recusado sem erro claro porque a extensão não esta no ALLOW MIME TYPES definido no Media Field.
- Visitantes deslogados não conseguem enviar arquivo, enquanto usuários logados conseguem, indicando restricao de USER ACCESS.
- Arquivos grandes (acima do limite do PHP) falham com erro de servidor ou o formulário simplesmente recarrega sem registrar o anexo na Biblioteca de Mídia.
Como prevenir
- Defina o ALLOW MIME TYPES apenas com os formatos realmente aceitos (ex.: pdf, jpg, png) para reduzir spam e arquivos perigosos no upload público.
- Configure MAXIMUM SIZE IN MB e os limites do PHP (upload_max_filesize e post_max_size) com valores coerentes entre si para evitar rejeicoes inesperadas.
- Use a MAXIMUM FILE SIZE MESSAGE e os avisos de validação para orientar o visitante sobre tamanho e quantidade antes do envio.
- Revise o USER ACCESS de cada Media Field conforme o público do formulário, deixando convidado apenas onde o upload anonimo for intencional.
Causa
- O arquivo enviado e maior que o valor definido em MAXIMUM SIZE IN MB no Media Field (padrão 40 MB na documentação), entao o JetFormBuilder o rejeita com 'File size limit exceeded'.
- O visitante anexa mais arquivos do que o permitido em MAXIMUM ALLOWED FILES TO UPLOAD, disparando a validação 'Files limit exceeded' do campo.
- A extensão do arquivo não esta listada em ALLOW MIME TYPES (que aceita tipos separados por virgula, espaco ou Enter), e como o campo não esta vazio ele bloqueia qualquer formato fora da lista.
- O USER ACCESS do campo esta restrito a usuários registrados ou a quem pode enviar arquivos, mas o formulário e usado por visitantes deslogados, que entao não tem permissão para o upload.
- O limite do servidor PHP (upload_max_filesize ou post_max_size no php.ini ou no host) e menor que o arquivo enviado, recusando o upload antes da validação do JetFormBuilder.
- O toggle Insert attachment esta ligado mas o usuário do upload não tem capacidade de gravar na Biblioteca de Mídia, fazendo o anexo não ser salvo após o envio.
Como resolver
- Ajuste o tamanho máximo no Media Field: No editor do formulário, selecione o campo Media Field e aumente o valor de MAXIMUM SIZE IN MB para acomodar o arquivo enviado. O padrão da documentação e 40 MB, entao confira se o seu arquivo passa desse limite e suba o número conforme a necessidade.
Editor do formulário -> clique no campo Media Field Aba Field -> MAXIMUM SIZE IN MB -> defina o tamanho desejado (ex.: 80) Ajuste também a MAXIMUM FILE SIZE MESSAGE para um aviso claro ao visitante - Libere a quantidade e os tipos de arquivo: Ainda no Media Field, revise MAXIMUM ALLOWED FILES TO UPLOAD para o número de anexos esperado e confira o ALLOW MIME TYPES. Se quiser aceitar vários formatos, liste-os separados por virgula ou deixe o campo vazio para permitir todos os tipos, como indica a documentação.
Aba Field -> MAXIMUM ALLOWED FILES TO UPLOAD -> defina o número de arquivos Aba Field -> ALLOW MIME TYPES -> ex.: jpg, png, pdf (ou deixe vazio para todos) - Corrija a permissão em USER ACCESS: Se visitantes deslogados precisam enviar arquivos, abra o dropdown USER ACCESS do campo e selecione a opção que inclui qualquer usuário, inclusive convidado. Restringir a usuários registrados bloqueia o upload de quem não esta logado.
Aba Field -> USER ACCESS -> selecione 'Any user (incl. Guest)' Para formulários internos, mantenha uma opção mais restrita de proposito - Eleve os limites de upload do PHP: Mesmo com o campo configurado, o servidor PHP recusa arquivos acima de upload_max_filesize e post_max_size. Aumente esses valores no php.ini ou no painel do host para que sejam iguais ou maiores que o limite do Media Field.
Edite o php.ini (ou use o painel do host) upload_max_filesize = 128M post_max_size = 128M Reinicie o PHP/servidor para aplicar as mudancas - Teste o envio e confira a Biblioteca de Mídia: Abra o formulário em uma janela anonima, envie um arquivo dentro dos novos limites e confirme o submit. Se o toggle Insert attachment estiver ligado, verifique se o anexo aparece na Biblioteca de Mídia após o envio.
Abra o formulário em uma aba anonima e envie um arquivo de teste Painel WP -> Mídia -> Biblioteca -> confirme o anexo (se Insert attachment estiver ligado)
<?php
// Amplia os tipos MIME aceitos pelo upload do WordPress para o Media Field.
add_filter( 'upload_mimes', 'full_jfb_allow_extra_mimes' );
function full_jfb_allow_extra_mimes( $mimes ) {
$mimes['svg'] = 'image/svg+xml';
$mimes['webp'] = 'image/webp';
return $mimes;
}
// Garante o teto de tamanho de upload no PHP via .htaccess/ini.
if ( ! defined( 'WP_MEMORY_LIMIT' ) ) {
@ini_set( 'upload_max_filesize', '128M' );
@ini_set( 'post_max_size', '128M' );
}














