Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #59 da revista programar. Faz já o download aqui!

diogocs

[Resolvido] Multi Upload

Mensagens Recomendadas

diogocs    1
diogocs

Olá a todos,

Estou a tentar criar um form que possibilite o envio de várias imagens para uma pasta mas estou a ter dificuldades.

Deixo abaixo o código:

index.php:

<form name="nova_fotografia" id="nova_fotografia" method="post" action="teste-foto-ok.php" enctype="multipart/form-data">
<input id='fotografia' name="fotografia[]" type="file" multiple="multiple" />
 <input type="submit">
</form>

teste-foto-ok.php:


<?php
$fotografia = $_FILES['fotografia']['name'];

foreach ($fotografia as $foto) {
$caminho = "images/fotografias/".$foto;
}
move_uploaded_file($_FILES['fotografia']['tmp_name'],$caminho);

?>

Devolve o seguinte erro:

( ! ) Warning: move_uploaded_file() expects parameter 1 to be string, array given ...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tiago.f    20
tiago.f

$_FILES['fotografia']['tmp_name'][X]

em que X vai de 0 a count($_FILES['fotografia']['tmp_name'])

EDIT: e claro, o comentário do HHH acima...

Editado por tiago.f

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
diogocs    1
diogocs

Obrigado aos dois.

Referem-se a colocar da seguinte forma?

(Já tinha testado assim e não resultou..)

<?php
$fotografia = $_FILES['fotografia']['name'];
foreach ($fotografia as $foto) {
$caminho = "images/fotografias/".$foto;
move_uploaded_file($_FILES['fotografia']['tmp_name'],$caminho);
}
?>

tiago.f

Podes explicar-me pf como faço para atribuir esses valores a variavel "x"?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tiago.f    20
tiago.f

A variável

$_FILES['fotografia']['tmp_name']

é um array, logo terás que iterar cada posição de modo a ires buscar cada uma das imagens que o utilizador escolheu.

Como te disse o tal X vai de 0 a count($_FILES['fotografia']['tmp_name']). Por isso é só criares um ciclo para leres cada 'tmp_name'

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
diogocs    1
diogocs

Obrigado mais uma vez pela resposta.

Fiz mais algumas pesquisas e tenho neste momento:

EDIT:

Após alguma pesquisa e testes fiz da seguinte forma:


$total = count($_FILES['fotografia']['name']);


for($i=0; $i<$total; $i++) {

$tmpFilePath = $_FILES['fotografia']['tmp_name'][$i];

if ($tmpFilePath != ""){
$newFilePath = "./images/fotografias/" . $_FILES['fotografia']['name'][$i];

if(move_uploaded_file($tmpFilePath, $newFilePath)) {
  }
 }
}

O unico problema é que ele funciona perfeitamente até 5 fotografias.. se inserir 6 devolve o erro:

"Undefined index: fotografia" - nesta linha:

$total = count($_FILES['fotografia']['name']);

Editado por diogocs

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tiago.f    20
tiago.f

Assumindo que está tudo bem com as fotos/ficheiros em si, vê se não estás a atingir o limite de tamanho permitido para o upload.

- vê do lado do browser: há um input hidden que podes definir para alterar isto -> Google

- vê do lado do php -> php.ini

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
diogocs    1
diogocs

Assumindo que está tudo bem com as fotos/ficheiros em si, vê se não estás a atingir o limite de tamanho permitido para o upload.

- vê do lado do browser: há um input hidden que podes definir para alterar isto -> Google

- vê do lado do php -> php.ini

Era precisamente o filzesize do php.ini

Alterei-o mas esqueci-me de reiniciar o wamp e os valor não eram assumidos. Entretanto utilizei phpinfo(); e reparei que tinha os valores antigos.

Resolvido :D

Obrigado pelo teu apoio

  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.