Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Mateus Silva

Problemas com sistema de upload

Recommended Posts

Então, meu caso é o seguinte:
Estou desenvolvendo um sistema de upload múltiplo em php e está dando um erro que não deveria estar... Não é bem um erro, está retornando um valor que não deveria, vocês vão entender, segue o código:

index.php

<form action="index.php?canal=gotoupload" method="post" id="upload" enctype="multipart/form-data">
<label>
<strong>Selecione a imagem</strong><br />
<input type="file" class="file" name="arquivos[]" multiple="true" /> <input type="submit" class="submit" value="Cadastrar imagens" />
</label>
</form>

e no arquivo gotoupload:

<?php
$arquivos = isset($_FILES['arquivos']) ? $_FILES['arquivos'] : false;
echo count($arquivos);
?>

tentei usar um print_r e retorna o seguinte:

 

 

Array ( [arquivos] => Array ( [name] => Array ( [0] => Chrysanthemum.jpg [1] => Desert.jpg [2] => Hydrangeas.jpg [3] => Jellyfish.jpg [4] => Koala.jpg [5] => Lighthouse.jpg [6] => Penguins.jpg [7] => Tulips.jpg ) [type] => Array ( [0] => image/jpeg [1] => image/jpeg [2] => image/jpeg [3] => image/jpeg [4] => image/jpeg [5] => image/jpeg [6] => image/jpeg [7] => image/jpeg ) [tmp_name] => Array ( [0] => C:\Program Files\EasyPHP-12.1\tmp\php6290.tmp [1] => C:\Program Files\EasyPHP-12.1\tmp\php62EB.tmp [2] => C:\Program Files\EasyPHP-12.1\tmp\php6346.tmp [3] => C:\Program Files\EasyPHP-12.1\tmp\php6379.tmp [4] => C:\Program Files\EasyPHP-12.1\tmp\php63CA.tmp [5] => C:\Program Files\EasyPHP-12.1\tmp\php641C.tmp [6] => C:\Program Files\EasyPHP-12.1\tmp\php644F.tmp [7] => C:\Program Files\EasyPHP-12.1\tmp\php64A0.tmp ) [error] => Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => 0 ) [size] => Array ( [0] => 879394 [1] => 845941 [2] => 595284 [3] => 775702 [4] => 780831 [5] => 561276 [6] => 777835 [7] => 620888 ) ) ) 

Ou seja, ele está recebendo como array, mas não está contando e eu preciso que ele conte pra imprimir na tela e usar no meu for, e o que acontece é que, mesmo com 1, 2, 3 ou nenhum arquivo selecionado ele sempre imprime o número 5 na tela.

Preciso que me ajudem urgentemente, não sei mais o que fazer, obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, já tinha feito isto e deu certo, porém agora o erro é outro:

quando envio o formulário sem nenhuma imagem ele "cria" um "array em branco" veja:

 

 

Array ( [arquivos] => Array ( [name] => Array ( [0] => ) [type] => Array ( [0] => ) [tmp_name] => Array ( [0] => ) [error] => Array ( [0] => 4 ) [size] => Array ( [0] => 0 ) ) )

como posso corrigir isto ? porque se imprimo o count do array na tela ele retorna "1" e não tenho como fazer a verificação se a pessoa selecionou ou não uma imagem

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lá vai:

 

<?php
if (!empty($_FILES['arquivos']['name'][0])) { //apenas verificando se veio algum arquivo
	$files = count($_FILES['arquivos']['name']);
	
	for ($x = 0; $x < $files; $x++) {
		move_uploaded_file($_FILES['arquivos']['tmp_name'][$x], $destino); //exemplo
	}

}
?>

Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguinte: mesmo que vc não selecione um arquivo, o campo existe e ele vai enviar um valor (mesmo que seja um valor em branco).

 

No caso desse que é um vetor, quando vc submeter, ele vazio vai criar a posição "0" em branco.

 

Não checamos através de uma posição aleatória, tá? É necessariamente a posição zero.

 

Abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.