Jump to content


Photo

Upload De Muliplas Fotos Com Thumbnail


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

#1 wawasurf

wawasurf

    Wawasurf

  • Usuários
  • 257 posts
  • Sexo:Masculino
  • Localidade:Criciuma

Posted 09/09/2008, 10:50

Estou fazendo uma galeria de fotos e naum estou conseguindo fazer a estrutura de repetição para o envio das fotos. Gostaria de saber onde estou errando no script.

functionsUpload.php
<?php
	function verifica_dimensao_image($img, $max_x, $max_y)
	{
		$dimensaoImage = getimagesize($img["tmp_name"]);
		$dimensao = '';
		// Verifica largura
		if($dimensaoImage[0] > $dimensaoImage[1])
		{
			if($dimensaoImage[0] > $max_x)
			{
				$dimensao = 'largura';
			}
		}
		else
		{
			if($dimensaoImage[0] < $dimensaoImage[1])
			{
				if($dimensaoImage[1] > $max_x)
				{
					$dimensao = 'altura';
				}
			}
			else
			{
				if($dimensaoImage[0] == $dimensaoImage[1])
				{
					if($dimensaoImage[0] > $max_x)
					{
						$dimensao = 'largura';
					}
				}
			}
		}
		return ($dimensao);		
	}//fim verifica_dimensao_image
	
	function reduz_imagem($img, $max_x, $max_y, $nome_foto)
	{
		//pega o tamanho da imagem ($original_x, $original_y)
		list($width, $height) = getimagesize($img);
		$original_x = $width;
		$original_y = $height;
		// se a largura for maior que altura
		if($original_x > $original_y) {
			   $porcentagem = (100 * $max_x) / $original_x;	  
		}
		else {
			   $porcentagem = (100 * $max_y) / $original_y;
		}
		$tamanho_x = $original_x * ($porcentagem / 100);
		$tamanho_y = $original_y * ($porcentagem / 100);
		$image_p = imagecreatetruecolor($tamanho_x, $tamanho_y);
		$image   = imagecreatefromjpeg($img);
		imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height);
		return imagejpeg($image_p, $nome_foto, 100);
	}//fim reduz_imagem
	
	function verifica_image($img)
	{
		// Verifica se o mime-type do arquivo é de imagem
		if(eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $img["type"]))
		{
			return (TRUE);
		}
		return (FALSE);
	}// fim verifica_image
	
	function verifica_extensao_image($img)
	{
		// Pega extensão do arquivo
		preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $img["name"], $ext);
		return ($ext[1]);
	}//fim verifica_extensao_imag
?>


enviar.php
<form id="form" method="post" action="uploadImage.php" enctype="multipart/form-data" accept-charset="utf-8">
  <p>Foto:
	<input type="file" name="userfile[]" />
</p>
  <p>Foto:
	<input type="file" name="userfile[]" />
</p>
  <p>Foto:
	<input type="file" name="userfile[]" />
</p>
  <p>Foto:
	<input type="file" name="userfile[]" />
</p>
  <p>Foto:
	<input type="file" name="userfile[]" />
</p>
<div id="botao">
		  <input id="enviar" type="submit" name="Enviar" value="Enviar" tabindex="6" class="botao"/>
	  </div>
	</form>


uploadImage.php
<?php
require_once ("functionsUpload.php");

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

   if($_FILES['userfile']['name'][$i])
   {

$arquivo = isset($_FILES["userfile"][$i]) ? $_FILES["userfile"][$i] : FALSE;
$max_image_x = 500;
$max_image_y = 375;
$diretorio = '/pasta_do_servidor/';
if($arquivo)
{
	$tamanho = getimagesize($arquivo["tmp_name"][$i]);
	ini_set ("max_execution_time", 3600); // uma hora
	$err = FALSE;
	if(is_uploaded_file($arquivo['tmp_name'][$i]))
	{
		if(verifica_image($arquivo))
		{
			$tamanho = getimagesize($arquivo["tmp_name"][$i]);
			$dimensiona = verifica_dimensao_image($arquivo, $max_image_x, $max_image_y);
			if($dimensiona != '')
			{
				if($dimensiona == 'altura')
				{
						$auxImage = $max_image_x;
						$max_image_x = $max_image_y;
						$max_image_y = $auxImage;
				}
			}
			else
			{
				$max_image_x = $tamanho[0];
				$max_image_y = $tamanho[1];
			}
			$nome_foto  = ('maior_' . time() . '.' . verifica_extensao_image($arquivo));// nome único para foto
			$endFoto = $diretorio . $nome_foto;
			if(reduz_imagem($arquivo['tmp_name'][$i], $max_image_x, $max_image_y, $endFoto))
			{
				$err = TRUE;
			}
		}
	}
}

$arquivo2 = isset($_FILES["foto"][$i]) ? $_FILES["foto"][$i] : FALSE;
$max_image_x2 = 120;
$max_image_y2 = 90;
$diretorio2 = '/home/admin/public_html/mercoplaza/admin/noticias/fotos/';
if($arquivo2)
{
	$tamanho2 = getimagesize($arquivo2["tmp_name"][$i]);
	ini_set ("max_execution_time", 3600); // uma hora
	$err2 = FALSE;
	if(is_uploaded_file($arquivo2['tmp_name'][$i]))
	{
		if(verifica_image($arquivo2))
		{
			$tamanho2 = getimagesize($arquivo2["tmp_name"][$i]);
			$dimensiona2 = verifica_dimensao_image($arquivo2, $max_image_x2, $max_image_y2);
			if($dimensiona2 != '')
			{
				if($dimensiona2 == 'altura')
				{
						$auxImage2 = $max_image_x2;
						$max_image_x2 = $max_image_y2;
						$max_image_y2 = $auxImage2;
				}
			}
			else
			{
				$max_image_x2 = $tamanho2[0];
				$max_image_y2 = $tamanho2[1];
			}
			$nome_foto2  = ('menor_' . time() . '.' . verifica_extensao_image($arquivo2));// nome único para foto
			$endFoto2 = $diretorio2 . $nome_foto2;
			if(reduz_imagem($arquivo2['tmp_name'][$i], $max_image_x2, $max_image_y2, $endFoto2))
			{
				$err2 = TRUE;
			}
		}
	}
}



}
}
?>

Wagner Machado Martins
Webmaster
Agência Gigante
Criciúma - SC

#2 Renan Tomal Fernandes

Renan Tomal Fernandes

    Turista

  • Usuários
  • 33 posts
  • Sexo:Masculino
  • Localidade:Ji-Paraná

Posted 09/09/2008, 11:14

Não li tudo mas se o seu problema é fazer a repetição, coloque o nome dos campos a enviar no post como
arquivo0
arquivo1
arquivo2
arquivoN

no php faça isso
[codebox]
for($i =0; $_FILE['arquivo' . $i] ; $i++){
//codigo de upload e resize
}
[/codebox]

Edição feita por: Renan Tomal Fernandes, 09/09/2008, 11:15.

"A humanidade é a pior praga existente na terra"
Meu Site

#3 wawasurf

wawasurf

    Wawasurf

  • Usuários
  • 257 posts
  • Sexo:Masculino
  • Localidade:Criciuma

Posted 09/09/2008, 11:26

Não esta dando certo ainda,

Olha como eu fiz:

require_once ("functionsUpload.php");

for($i =0; $_FILE['arquivo' . $i]; $i++){

$arquivo = isset($_FILES["userfile"][$i]) ? $_FILES["userfile"][$i] : FALSE;
$max_image_x = 500;
$max_image_y = 375;
$diretorio = '/home/admin/public_html/testes/eu/fotos/';
if($arquivo)
{
	$tamanho = getimagesize($arquivo["tmp_name"][$i]);
	ini_set ("max_execution_time", 3600); // uma hora
	$err = FALSE;
	if(is_uploaded_file($arquivo['tmp_name'][$i]))
	{
		if(verifica_image($arquivo))
		{
			$tamanho = getimagesize($arquivo["tmp_name"][$i]);
			$dimensiona = verifica_dimensao_image($arquivo, $max_image_x, $max_image_y);
			if($dimensiona != '')
			{
				if($dimensiona == 'altura')
				{
						$auxImage = $max_image_x;
						$max_image_x = $max_image_y;
						$max_image_y = $auxImage;
				}
			}
			else
			{
				$max_image_x = $tamanho[0];
				$max_image_y = $tamanho[1];
			}
			$nome_foto  = ('maior_' . time() . '.' . verifica_extensao_image($arquivo));// nome único para foto
			$endFoto = $diretorio . $nome_foto;
			if(reduz_imagem($arquivo['tmp_name'][$i], $max_image_x, $max_image_y, $endFoto))
			{
				$err = TRUE;
			}
		}
	}
}

}
?>

No functionsUpload.php não precisa fazer nada?

<?php

	function verifica_dimensao_image($img, $max_x, $max_y)
	{
		$dimensaoImage = getimagesize($img["tmp_name"]);
		$dimensao = '';
		// Verifica largura
		if($dimensaoImage[0] > $dimensaoImage[1])
		{
			if($dimensaoImage[0] > $max_x)
			{
				$dimensao = 'largura';
			}
		}
		else
		{
			if($dimensaoImage[0] < $dimensaoImage[1])
			{
				if($dimensaoImage[1] > $max_x)
				{
					$dimensao = 'altura';
				}
			}
			else
			{
				if($dimensaoImage[0] == $dimensaoImage[1])
				{
					if($dimensaoImage[0] > $max_x)
					{
						$dimensao = 'largura';
					}
				}
			}
		}
		return ($dimensao);		
	}//fim verifica_dimensao_image
	
	function reduz_imagem($img, $max_x, $max_y, $nome_foto) 
	{
		//pega o tamanho da imagem ($original_x, $original_y)
		list($width, $height) = getimagesize($img);
		$original_x = $width;
		$original_y = $height;
		// se a largura for maior que altura
		if($original_x > $original_y) {
			   $porcentagem = (100 * $max_x) / $original_x;	  
		} 
		else {
			   $porcentagem = (100 * $max_y) / $original_y;
		}
		$tamanho_x = $original_x * ($porcentagem / 100);
		$tamanho_y = $original_y * ($porcentagem / 100);
		$image_p = imagecreatetruecolor($tamanho_x, $tamanho_y);
		$image   = imagecreatefromjpeg($img);
		imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height);
		return imagejpeg($image_p, $nome_foto, 100);
	}//fim reduz_imagem
	
	function verifica_image($img)
	{
		// Verifica se o mime-type do arquivo é de imagem
		if(eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $img["type"]))
		{
			return (TRUE);
		}
		return (FALSE);
	}// fim verifica_image
	
	function verifica_extensao_image($img)
	{
		// Pega extensão do arquivo
		preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $img["name"], $ext);
		return ($ext[1]);
	}//fim verifica_extensao_imag
	
	
?>

Wagner Machado Martins
Webmaster
Agência Gigante
Criciúma - SC

#4 Renan Tomal Fernandes

Renan Tomal Fernandes

    Turista

  • Usuários
  • 33 posts
  • Sexo:Masculino
  • Localidade:Ji-Paraná

Posted 10/09/2008, 00:54

esperimente
[codebox]for($i =0; count($_FILE) ; $i++){[/codebox]
no seu php.ini coloque para ver todos os erros
error_reporting = E_ALL
veja se ele da algum erro e em qual linha
"A humanidade é a pior praga existente na terra"
Meu Site

#5 lwirkk

lwirkk

    Veterano

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

Posted 10/09/2008, 02:56

'-'

Com base no primeiro POST...

Na variável $arquivo você já define o array multidimensional para essa variável, por que depois mais embaixo você pega assim?
$arquivo["tmp_name"][$i]
Só pegar assim
$arquivo["tmp_name"]
já daria (y)
E, seu FOR() já poderia ser assim que daria também se você ter só 5 campos:
for ($i=0;$i<5;$i++)

Renan:
Se usar count() em um FOR() não é recomendado por que pelo caso dele ele fazer a contagem em cada iteração, por isso é bom definir o valor do COUNT() apenas uma vez em uma variável antes de começar o loop, anaum ser em poucos casos que precise fazer isso, mas este não seria um deles acredite eu. =)

E se for usar COUNT() em $_FILES poderá retornar algo indesejado por conter valores multidimensionais...

E error_reporting() "pode" ser usado via script do PHP ao invés de modificar pelo php.ini .
http://br.php.net/error_reporting.
Posted Image
"Se quiser ser feliz por um dia, vingue-se; se quiser ser feliz por uma vida inteira, perdoe."

Muito Obrigado à todos do fórum, e à toda equipe do fórum! =)

#6 wawasurf

wawasurf

    Wawasurf

  • Usuários
  • 257 posts
  • Sexo:Masculino
  • Localidade:Criciuma

Posted 11/09/2008, 10:51

Agora ele esta pegando apenas a ultima foto postada e as outras o script nem chega a enviar pra servidor.

Olha como eu fiz

<?php 
require_once ("functionsUpload.php");
set_time_limit(0);	//Elimita o limite de tempo do php_timeout();

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

//pega os nomes dos campos files (prefixo + numero crescente)

$id_arquivo = "foto".$i;
$nome_arquivo = $_FILES[$id_arquivo]["name"];
$arqv_temporario = $_FILES[$id_arquivo]["tmp_name"];

// faz o upload dos arquivos

$arquivo = isset($_FILES["foto".$i]) ? $_FILES["foto".$i] : FALSE;
$max_image_x = 100;
$max_image_y = 75;
$diretorio = '/home/admin/public_html/testes/eu/fotos/';
if($arquivo)
{
	$tamanho = getimagesize($arquivo["tmp_name"]);
	ini_set ("max_execution_time", 3600); // uma hora
	$err = FALSE;
	if(is_uploaded_file($arqv_temporario))
	{
		if(verifica_image($arquivo))
		{
			$tamanho = getimagesize($arqv_temporario);
			$dimensiona = verifica_dimensao_image($arquivo, $max_image_x, $max_image_y);
			if($dimensiona != '')
			{
				if($dimensiona == 'altura')
				{
						$auxImage = $max_image_x;
						$max_image_x = $max_image_y;
						$max_image_y = $auxImage;
				}
			}
			else
			{
				$max_image_x = $tamanho[0];
				$max_image_y = $tamanho[1];
			}
			$nome_foto  = ('imagem_crop_' . time() . '.' . verifica_extensao_image($arquivo));// nome único para foto
			$endFoto = $diretorio . $nome_foto;
			if(reduz_imagem($arqv_temporario, $max_image_x, $max_image_y, $endFoto))
			{
				$err = TRUE;
			}
		}
	}
}


{



echo "O Arquivo <b>$nome_foto</b> foi concluido com sucesso<br />
<img src=fotos/$nome_foto />
";




}


}

?>

Dae pessoal, aguém pode me da uma luz ai, não sei mais o q faço, não consigo achar o erro!

Obriado
Wagner Machado Martins
Webmaster
Agência Gigante
Criciúma - SC




1 user(s) are reading this topic

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

IPB Skin By Virteq