Jump to content
renan.miranda

Como saber que esta "vindo" uma imagem do Formulário ?

Recommended Posts

Saudações amigos...

Eu estou com uma dúvida...

 

Eu geralmente utilizo a sintaxe:

 

if (!empty($_POST['campo']["name"])) {}

 

Para saber se foi preenchida alguma imagem no campo do formulario, para executar uma determinação ação, só que, eu estou utilizando a sintaxe no formulário name="campo[]", ou seja, passando um array, e percebo que a função if (!empty($_POST['campo']["name"])) {} não funciona, não reconhece...

 

Como eu faço isso agora que se trata de um array? Como eu faço para o PHP saber que o campo name="campo[]" está vazio?

Share this post


Link to post
Share on other sites

Arquivos são "resgatados" pela variável global $_FILES. Uma sugestão para o seu problema é a seguinte:

if(isset($_FILES['imagem']) && !empty($_FILES['imagem']))
{

}

Obs: 'imagem' é o valor do campo name no formulário.

Share this post


Link to post
Share on other sites

Nada feito...

 

Arquivos são "resgatados" pela variável global $_FILES. Uma sugestão para o seu problema é a seguinte:

if(isset($_FILES['imagem']) && !empty($_FILES['imagem']))
{

}

Obs: 'imagem' é o valor do campo name no formulário.

 

Nada feito... isso funciona se o campo estiver normal, ou seja, sem passar array, no caso name="campo", e no meu caso, eu estou usando campo em array, pois estou fazendo mais de um upload sendo name="campo[]", e isso não funciona

Share this post


Link to post
Share on other sites

Você pode postar trechos do formulário e do código onde recebe esses dados?

Share this post


Link to post
Share on other sites

Se você está gerando uma array, falta o índice dele... dê um print_r para ver a estrutura, mas o esperado é algo do tipo:

$_FILES['campo']['0']['name']
$_FILES['campo']['1']['name']
$_FILES['campo']['2']['name']
De qualquer jeito, files só existe quando alguma imagem é preenchida, então um isset deveria funcionar.

Share this post


Link to post
Share on other sites

Se você está gerando uma array, falta o índice dele... dê um print_r para ver a estrutura, mas o esperado é algo do tipo:

$_FILES['campo']['0']['name']
$_FILES['campo']['1']['name']
$_FILES['campo']['2']['name']
De qualquer jeito, files só existe quando alguma imagem é preenchida, então um isset deveria funcionar.

 

 

Vamos lá...

Dei print_r no $_FILES['infimagem'] // esse é o name do input

 

## Quando coloco imagem :

Array (

[name] => Array ( [0] => nt.jpg )

[type] => Array ( [0] => image/jpeg )

[tmp_name] => Array ( [0] => D:\Servidor\tmp\phpD72D.tmp )

[error] => Array ( [0] => 0 )

=> Array ( [0] => 298652 ) )

 

## Quando não seleciono imagem:

Array (

[name] => Array ( [0] => )

[type] => Array ( [0] => )

[tmp_name] => Array ( [0] => )

[error] => Array ( [0] => 4 )

=> Array ( [0] => 0 ) )

 

Lembrando... essa condição:

if(isset($_FILES['infimagem']) && !empty($_FILES['infimagem']))

 

Só funciona se o input estiver assim:

<input type="file" multiple="multiple" accept="image/*" class="form-control" id="infimagem" name="infimagem">

 

Mas no caso, eu estou utilizando assim:

<input type="file" multiple="multiple" accept="image/*" class="form-control" id="infimagem" name="infimagem[]">

 

Pois estou trabalhando com multiple="multiple" para fazer upload de várias fotos e salvando no banco...

 

Eu estou na parte de atualização... ou seja... a pessoa pode somente querer atualizar o nome sem enviar foto no campo, e dessa forma, o campo da foto vai ser inserida em branco, por isso que quero colocar essa condição, que se não for selecionada imagem, apenas atualizar o restante das informações...

 

É ESSA A QUESTÃO.

 

No aguardo

Share this post


Link to post
Share on other sites

Isso é por causa do multiple... nunca usei e não sei exatamente como funciona, mas imagino que o próprio navegador vai gerenciar isto, evitando a necessidade do [], de qualquer sorte a estrutura está ficando como:

$_FILES['infimagem']['name']['0']

Logo:

if (!empty($_POST['infimagem']["name"]['0'])) { }

Apenas verifique se realmente está ficando em branco ou se não está sendo enviado algum espaço ou coisa do tipo.

Share this post


Link to post
Share on other sites

Isso é por causa do multiple... nunca usei e não sei exatamente como funciona, mas imagino que o próprio navegador vai gerenciar isto, evitando a necessidade do [], de qualquer sorte a estrutura está ficando como:

$_FILES['infimagem']['name']['0']

Logo:

if (!empty($_POST['infimagem']["name"]['0'])) { }

Apenas verifique se realmente está ficando em branco ou se não está sendo enviado algum espaço ou coisa do tipo.

 

Opa... resolvido dessa forma...

if (!empty($_FILES['infimagem']["name"]['0'])) { }

 

Apenas troquei de POST pra FILES, pois se trara de um arquivo... vai entender pq mais um parâmetro.

Obrigado

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.