Jump to content


Photo

Upload Multiplo


  • Faça o login para participar
7 replies to this topic

#1 Holy Demons

Holy Demons

    Ativo

  • Usuários
  • 325 posts
  • Sexo:Não informado

Posted 05/05/2007, 10:01

E ai galera beleza? é o seguinte sei que meu codigo ficou enorme dava para reduzir muito mesmo, mais como estou sem tempo para refazer ele estudar qual seria a melhor forma eu fiz desse jeito... O codigo funciona perfeitinho do jeito que eu quero mais tem um problema com a quantidade a ser enviada.

Tenho um formulario com 10 campos do tipo Files e manda para ser feito upload... se eu mandar 10 fotos as 10 sao enviadas perfeitamente... agora entra meu problema... Se a pessoa que vai fazer o upload só tem 5 fotos para enviar e deixar os outros vazios o sistema nao aceita tentei criar uma condição mais nao aceitou... olha como ficou


<?php
/////////////////////inicio de um dilema/////////////////////
// vamos fazer o upload
$erro = $config = array();
// Prepara a variável do arquivo
$foto = isset($_FILES["foto_1"]) ? $_FILES["foto_1"] : FALSE;
$foto1 = isset($_FILES["foto_2"]) ? $_FILES["foto_2"] : FALSE;
$foto2 = isset($_FILES["foto_3"]) ? $_FILES["foto_3"] : FALSE;
$foto3 = isset($_FILES["foto_4"]) ? $_FILES["foto_4"] : FALSE;
$foto4 = isset($_FILES["foto_5"]) ? $_FILES["foto_5"] : FALSE;
$foto5 = isset($_FILES["foto_6"]) ? $_FILES["foto_6"] : FALSE;
$foto6 = isset($_FILES["foto_7"]) ? $_FILES["foto_7"] : FALSE;
$foto7 = isset($_FILES["foto_8"]) ? $_FILES["foto_8"] : FALSE;
$foto8 = isset($_FILES["foto_9"]) ? $_FILES["foto_9"] : FALSE;
$foto9 = isset($_FILES["foto_10"]) ? $_FILES["foto_10"] : FALSE;
$config["tamanho"] = 409600;
$config["largura"] = 1024;
$config["altura"] = 1024;
if($foto || $foto1 || $foto2)
{
// Verifica se o mime-type do arquivo é de imagem
if(isset($foto)) { if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $foto["type"]) || !empty($foto))

{
$erro[] = "Arquivo em formato inválido! A imagem deve ser jpg, jpeg,
bmp, gif ou png. Envie outro arquivo";
}}
if(isset($foto1)) { if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $foto1["type"]) || !empty($foto1))
{
$erro[] = "Arquivo em formato inválido! 2 A imagem deve ser jpg, jpeg,
bmp, gif ou png. Envie outro arquivo";
}}
if(isset($foto2)) { if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $foto2["type"]) || !empty($foto2))
{
$erro[] = "Arquivo em formato inválido! 3 A imagem deve ser jpg, jpeg,
bmp, gif ou png. Envie outro arquivo";
}}
if(isset($foto3)) { if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $foto3["type"]) || !empty($foto3))
{
$erro[] = "Arquivo em formato inválido! 4 A imagem deve ser jpg, jpeg,
bmp, gif ou png. Envie outro arquivo";
}}
if(isset($foto5)) { if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $foto4["type"]) || !empty($foto4))
{
$erro[] = "Arquivo em formato inválido! 5 A imagem deve ser jpg, jpeg,
bmp, gif ou png. Envie outro arquivo";
}}
if(isset($foto5)) { if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $foto5["type"]) || !empty($foto5))
{
$erro[] = "Arquivo em formato inválido! 6 A imagem deve ser jpg, jpeg,
bmp, gif ou png. Envie outro arquivo";
}}
if(isset($foto6)) { if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $foto6["type"]) || !empty($foto6))
{
$erro[] = "Arquivo em formato inválido! 7 A imagem deve ser jpg, jpeg,
bmp, gif ou png. Envie outro arquivo";
}}
if(isset($foto7)) { if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $foto7["type"]) || !empty($foto7))
{
$erro[] = "Arquivo em formato inválido! 8 A imagem deve ser jpg, jpeg,
bmp, gif ou png. Envie outro arquivo";
}}
if(isset($foto8)) { if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $foto8["type"]) || !empty($foto8))
{
$erro[] = "Arquivo em formato inválido! 9 A imagem deve ser jpg, jpeg,
bmp, gif ou png. Envie outro arquivo";
}}
if(isset($foto9)) { if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $foto9["type"]) || !empty($foto9))
{
$erro[] = "Arquivo em formato inválido! 10 A imagem deve ser jpg, jpeg,
bmp, gif ou png. Envie outro arquivo";
}}
else
{
// Verifica tamanho do arquivo
if($foto["size"] > $config["tamanho"])
{
$erro[] = "Arquivo em tamanho muito grande!
A imagem deve ser de no máximo " . $config["tamanho"] . " bytes.
Envie outro arquivo";
}
if($foto1["size"] > $config["tamanho"])
{
$erro[] = "Arquivo em tamanho 2 muito grande!
A imagem deve ser de no máximo " . $config["tamanho"] . " bytes.
Envie outro arquivo";
}
if($foto2["size"] > $config["tamanho"])
{
$erro[] = "Arquivo em tamanho 3 muito grande!
A imagem deve ser de no máximo " . $config["tamanho"] . " bytes.
Envie outro arquivo";
}
if($foto3["size"] > $config["tamanho"])
{
$erro[] = "Arquivo em tamanho 4 muito grande!
A imagem deve ser de no máximo " . $config["tamanho"] . " bytes.
Envie outro arquivo";
}
if($foto4["size"] > $config["tamanho"])
{
$erro[] = "Arquivo em tamanho 5 muito grande!
A imagem deve ser de no máximo " . $config["tamanho"] . " bytes.
Envie outro arquivo";
}
if($foto5["size"] > $config["tamanho"])
{
$erro[] = "Arquivo em tamanho 6 muito grande!
A imagem deve ser de no máximo " . $config["tamanho"] . " bytes.
Envie outro arquivo";
}
if($foto6["size"] > $config["tamanho"])
{
$erro[] = "Arquivo em tamanho 7 muito grande!
A imagem deve ser de no máximo " . $config["tamanho"] . " bytes.
Envie outro arquivo";
}
if($foto7["size"] > $config["tamanho"])
{
$erro[] = "Arquivo em tamanho 8 muito grande!
A imagem deve ser de no máximo " . $config["tamanho"] . " bytes.
Envie outro arquivo";
}
if($foto8["size"] > $config["tamanho"])
{
$erro[] = "Arquivo em tamanho 9 muito grande!
A imagem deve ser de no máximo " . $config["tamanho"] . " bytes.
Envie outro arquivo";
}
if($foto9["size"] > $config["tamanho"])
{
$erro[] = "Arquivo em tamanho 10 muito grande!
A imagem deve ser de no máximo " . $config["tamanho"] . " bytes.
Envie outro arquivo";
}
// Para verificar as dimensões da imagem
$tamanhos = getimagesize($foto["tmp_name"]);
$tamanhos = getimagesize($foto1["tmp_name"]);
$tamanhos = getimagesize($foto2["tmp_name"]);
$tamanhos = getimagesize($foto3["tmp_name"]);
$tamanhos = getimagesize($foto4["tmp_name"]);
$tamanhos = getimagesize($foto5["tmp_name"]);
$tamanhos = getimagesize($foto6["tmp_name"]);
$tamanhos = getimagesize($foto7["tmp_name"]);
$tamanhos = getimagesize($foto8["tmp_name"]);
$tamanhos = getimagesize($foto9["tmp_name"]);
// Verifica largura
if($tamanhos[0] > $config["largura"])
{
$erro[] = "Largura da imagem não deve
ultrapassar " . $config["largura"] . " pixels";
}

// Verifica altura
if($tamanhos[1] > $config["altura"])
{
$erro[] = "Altura da imagem não deve
ultrapassar " . $config["altura"] . " pixels";
}}
// Imprime as mensagens de erro
if(sizeof($erro))
{
foreach($erro as $err)
{
echo " - " . $err . "<BR>";
} }
// Verificação de dados OK, nenhum erro ocorrido, executa então o upload...
else {
// Pega extensão do arquivo
preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $foto["name"], $ext);
preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $foto1["name"], $ext);
preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $foto2["name"], $ext);
preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $foto3["name"], $ext);
preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $foto4["name"], $ext);
preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $foto5["name"], $ext);
preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $foto6["name"], $ext);
preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $foto7["name"], $ext);
preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $foto8["name"], $ext);
preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $foto9["name"], $ext);
// Gera um nome único para a imagem
$imagem_nome = md5(uniqid(time())) . "." . $ext[1];
$imagem_nome1 = md5(uniqid(time())) . "." . $ext[1];
$imagem_nome2 = md5(uniqid(time())) . "." . $ext[1];
$imagem_nome3 = md5(uniqid(time())) . "." . $ext[1];
$imagem_nome4 = md5(uniqid(time())) . "." . $ext[1];
$imagem_nome5 = md5(uniqid(time())) . "." . $ext[1];
$imagem_nome6 = md5(uniqid(time())) . "." . $ext[1];
$imagem_nome7 = md5(uniqid(time())) . "." . $ext[1];
$imagem_nome8 = md5(uniqid(time())) . "." . $ext[1];
$imagem_nome9 = md5(uniqid(time())) . "." . $ext[1];
// Caminho de onde a imagem ficará
$local = "../imobiliarias/corretores/teste/";
$imagem_dir = "$local" . $imagem_nome;
$imagem_dir1 = "$local" . $imagem_nome1;
$imagem_dir2 = "$local" . $imagem_nome2;
$imagem_dir3 = "$local" . $imagem_nome3;
$imagem_dir4 = "$local" . $imagem_nome4;
$imagem_dir5 = "$local" . $imagem_nome5;
$imagem_dir6 = "$local" . $imagem_nome6;
$imagem_dir7 = "$local" . $imagem_nome7;
$imagem_dir8 = "$local" . $imagem_nome8;
$imagem_dir9 = "$local" . $imagem_nome9;
// Faz o upload da imagem
move_uploaded_file($foto["tmp_name"], $imagem_dir);
move_uploaded_file($foto1["tmp_name"], $imagem_dir1);
move_uploaded_file($foto2["tmp_name"], $imagem_dir2);
move_uploaded_file($foto3["tmp_name"], $imagem_dir3);
move_uploaded_file($foto4["tmp_name"], $imagem_dir4);
move_uploaded_file($foto5["tmp_name"], $imagem_dir5);
move_uploaded_file($foto6["tmp_name"], $imagem_dir6);
move_uploaded_file($foto7["tmp_name"], $imagem_dir7);
move_uploaded_file($foto8["tmp_name"], $imagem_dir8);
move_uploaded_file($foto9["tmp_name"], $imagem_dir9);
echo "Sua foto foi enviada com sucesso!";
}}

?>


Bom galera é isso ai, agradeço de coração aqueles que puderem me ajudar e mesmo aqueles que nao puderem agradeço memso assim.

#2 --The Matrix--

--The Matrix--

    Normal

  • Usuários
  • 118 posts
  • Sexo:Masculino
  • Localidade:Avaré - SP

Posted 05/05/2007, 15:44

tenta usar else if após a parte destacada.
Ricardo Crivelli
Delphi Developer Certified
CobiT Foundation 4.1 Certified
@ricocrivelli
4Bytes Inc. - Desenvolvimento de sistemas especialistas web.

#3 Renan Gonçalves

Renan Gonçalves

    Web Developer

  • Usuários
  • 771 posts
  • Sexo:Masculino
  • Localidade:São Paulo, SP
  • Interesses:Programar PHP, Java (e JSP), Javascript (com Ajax, claro), Ruby (on Rails) !

Posted 05/05/2007, 16:09

Cara, que tal diminuir esse código e deixar mais adaptável ?

Bom ...
<?php
$erro = $fotos = $config = array();
$config['tamanho'] = 409600;
$config['largura'] = 1024;
$config['altura'] = 1024;

// Fazendo loop em todos os FILES
foreach ($_FILES as $i => $foto)
{
	 // Verifica se mandou o arquivo
	 if ($foto['error'] == 0)
	 {
		 // Mandou, vamos verificar o mime do arquivo
		 if(!eregi('^image\/(pjpeg|jpeg|png|gif|bmp)$', $foto['type']))
		 {
			 // Coloca o erro em $erros e parte para o próximo arquivo
			 $erro[] = 'Arquivo em formato inválido! A imagem "' . $i . '" deve ser jpg, jpeg, bmp, gif ou png. Envie outro arquivo';
			 continue;
		  }

		  // É foto, vamos testar o tamanho
		  if($foto['size'] > $config['tamanho'])
		  {
			   $erro[] = 'Arquivo em tamanho "' . $i . '" muito grande! A imagem deve ser de no máximo ' . $config['tamanho'] . ' bytes. Envie outro arquivo';
			   continue;
		   }

		   // Agora as dimensões
		   $tamanhos = getimagesize($foto['tmp_name']);
		   if($tamanhos[0] > $config['largura'])
		   {
				$erro[] = 'Largura da imagem não deve ultrapassar ' . $config['largura'] . ' pixels';
				continue;
		   }
		   if($tamanhos[1] > $config['altura'])
		   {
				 $erro[] = 'Altura da imagem não deve ultrapassar ' . $config['altura'] . ' pixels';
				 continue;
		   }

		   // Ate aqui tudo certo, vamos salvar num array pra depois fazer upload
		   $fotos[] = $foto;
	 }
}

// Vamos verificar se houve erros
if (count($erro) != 0)
{
	 echo implode(' - ', $erro);
}
else
{
	 // Sem erros, vamos fazer upload
	 foreach ($fotos as $foto)
	 {
		 preg_match('/\.(gif|bmp|png|jpg|jpeg){1}$/i', $foto['name'], $ext);
		 $nome = md5(uniqid(time())) . '.' . $ext[1];
		 
		 // Caminho de onde a imagem ficará
		 $local = '../imobiliarias/corretores/teste/';
		 $imagem_dir = $local . $nome;

		 // Upload
		 move_uploaded_file($foto['tmp_name'], $imagem_dir);
	 }

	 echo 'Fotos enviadas com sucesso!';
}
?>


[]'s

Renan Gonçalves
renan.saddam@gmail.com
(WebSite / Gmail / orkut / Windows Live! Messenger
)

"Aquele que se define se limita."


#4 Holy Demons

Holy Demons

    Ativo

  • Usuários
  • 325 posts
  • Sexo:Não informado

Posted 06/05/2007, 15:09

Meu sem palavras mesmo... muito obrigado mesmo

Como eu faço parea saber o nome de cada foto? para salvar no banco?

#5 Renan Gonçalves

Renan Gonçalves

    Web Developer

  • Usuários
  • 771 posts
  • Sexo:Masculino
  • Localidade:São Paulo, SP
  • Interesses:Programar PHP, Java (e JSP), Javascript (com Ajax, claro), Ruby (on Rails) !

Posted 06/05/2007, 15:42

O nome de cada foto é definida por $nome.
Basta fazer também um INSERT dentro desse loop.

...
foreach ($fotos as $foto)
{
preg_match('/\.(gif|bmp|png|jpg|jpeg){1}$/i', $foto['name'], $ext);
$nome = md5(uniqid(time())) . '.' . $ext[1];
...


[]'s

Renan Gonçalves
renan.saddam@gmail.com
(WebSite / Gmail / orkut / Windows Live! Messenger
)

"Aquele que se define se limita."


#6 Holy Demons

Holy Demons

    Ativo

  • Usuários
  • 325 posts
  • Sexo:Não informado

Posted 06/05/2007, 16:01

E ai grande amigo... eu pensei nessa forma que vc falou e fiz do jeito que vc e eu imaginava mais eu devo ter me perdido pois ele esta gravando varias vezes no banco o nome igual mais isso é por causa do loop mais nao consegui entender ainda eu fiz assim:

foreach ($fotos as $foto)
{
preg_match('/\.(gif|bmp|png|jpg|jpeg){1}$/i', $foto['name'], $ext);
$nome = md5(uniqid(time())) . '.' . $ext[1];
$q=mysql_query("INSERT INTO fotos_imoveis (proprietario, imovel, foto_1, detalhe_1, foto_2, detalhe_2, foto_3, detalhe_3, foto_4, detalhe_4, foto_5, detalhe_5, foto_6, detalhe_6, foto_7, detalhe_7, foto_8, detalhe_8, foto_9, detalhe_9, foto_10, detalhe_10) VALUES('$proprietario','$imovel','$nome','$detalhe_1','$nome','$detalhe_2','$nome','$detalhe_3','$nome',
'$detalhe_4','$nome','$detalhe_5','$nome','$detalhe_6','$nome','$detalhe_7','$nome','$detalhe_8','$nome','$detalhe_9','$nome','$detalhe_10')")
or die (mysql_error());
mysql_query($q);
// Caminho de onde a imagem ficará
$local = '../imobiliarias/corretores/teste/';
$imagem_dir = $local . $nome;
// Upload
move_uploaded_file($foto['tmp_name'], $imagem_dir);

}
echo 'Fotos enviadas com sucesso!';
}




Valeu pela atenção

Edição feita por: Holy Demons, 06/05/2007, 16:02.


#7 Renan Gonçalves

Renan Gonçalves

    Web Developer

  • Usuários
  • 771 posts
  • Sexo:Masculino
  • Localidade:São Paulo, SP
  • Interesses:Programar PHP, Java (e JSP), Javascript (com Ajax, claro), Ruby (on Rails) !

Posted 06/05/2007, 16:34

Ahhh, está certo.

Entendi ...
Faça assim, no começo do arquivo você coloca a seguinte função:
function make_seed()
{
  list($usec, $sec) = explode(' ', microtime());
  return (float) $sec + ((float) $usec * 100000);
}

E para gerar o nome você faz assim:
srand(make_seed());
$nome = time() . rand() . '.' . $ext[1];

Isso deve bastar, apague a linha do $nome e coloque isso acima no lugar.


[]'s

Só mais uma dica...

Deixe uma tabela para os imoveis e uma tabela para as fotos.
No estilo Muitos para Um, ou seja, Muitas fotos para Um Imovel.

Exemplo:
Tabela Imoveis
Campos: id, proprietario, imovel

Tabela Fotos
Campos: id, imovel_id, caminho, detalhe


[]'s

Renan Gonçalves
renan.saddam@gmail.com
(WebSite / Gmail / orkut / Windows Live! Messenger
)

"Aquele que se define se limita."


#8 Holy Demons

Holy Demons

    Ativo

  • Usuários
  • 325 posts
  • Sexo:Não informado

Posted 07/05/2007, 00:02

Entao nao deu certo ela repeti o memso nome em todos os campos da tabela... seria que teria possibilidade de manter o comando md5?

Entao essa tabela é só para as fotos esse campo imovel só é o id que vem da tabela imovel...

O problema todo esta em como saber4 o nome novo de cada arquivo que foi feito o upload...




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq