Ir para conteúdo

Arquivado

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

Fabyo

Upload de Imagem

Recommended Posts

Inicialmente um excelente 2009 a todos!!!

 

Eu estou usando esse script que é muito bom, parabéns!!!

 

Agora me surgiu uma nova necessidade e eu não estou sabendo como tratar: eu terei 4 imagens de um determinado produto que é restaurado pelo meu cliente, a princípio pensei em deixar a imagem principal do produto na pasta imagens/produtos, a imagem de quando o produto chegou em imagens/produtos/antes e a imagem após a restauração em imagens/produtos/depois

1) Essa seria a melhor forma de organizar?

 

2) Como utilizar o script para seguir esta idéia?

 

Desde já agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif olha, que interessante.... muié postando em fórum de php.... alguém quer casar comigo? huahuahua

 

bom, não li o tópico todo, nem sei como vim parar neste post...

 

já tive uns probleminhas com gravação/recuparação de imagens e geração de thumbs e tenho alguns scripts que funcionam...

 

como não tenho muito tempo de ficar postando em foruns, disponibiizo meu MSN pra quem quiser: keapsectro@hotmail.com

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif olha, que interessante.... muié postando em fórum de php.... alguém quer casar comigo? huahuahua

 

bom, não li o tópico todo, nem sei como vim parar neste post...

 

já tive uns probleminhas com gravação/recuparação de imagens e geração de thumbs e tenho alguns scripts que funcionam...

 

como não tenho muito tempo de ficar postando em foruns, disponibiizo meu MSN pra quem quiser: keapsectro@hotmail.com

 

Se possível, upa em algum server e disponibiliza o link para nós.

 

Obrigado

 

 

E eu ainda continuo com o mesmo problema. Não consigo gravar no BD os nomes das fotos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif olha, que interessante.... muié postando em fórum de php.... alguém quer casar comigo? huahuahua

 

bom, não li o tópico todo, nem sei como vim parar neste post...

 

já tive uns probleminhas com gravação/recuparação de imagens e geração de thumbs e tenho alguns scripts que funcionam...

 

como não tenho muito tempo de ficar postando em foruns, disponibiizo meu MSN pra quem quiser: keapsectro@hotmail.com

 

Se possível, upa em algum server e disponibiliza o link para nós.

 

Obrigado

 

 

E eu ainda continuo com o mesmo problema. Não consigo gravar no BD os nomes das fotos.

 

Bom como eu tive que usar dois campos esses dias também, estou meio sem tempo fiz acho que uma gambiarra, mas está funcionando, pelo menos até eu ter tempo de reformular vou usar assim, talvez te ajude:

$cont_img++;
					if ($cont_img == '1'){
						$salvar_p = $nome_foto;
					}
					if($cont_img == '2'){
						$salvar_g = $nome_foto;
					}

					$resultado = $SQL->Query("UPDATE ptunet_banners SET img_p='".$salvar_p."',img_g='".$salvar_g."' WHERE banner_id = ".$this->topico_id);
Como disse acho que é uma gambiarra, mas provisoriamente pode te ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom como eu tive que usar dois campos esses dias também, estou meio sem tempo fiz acho que uma gambiarra, mas está funcionando, pelo menos até eu ter tempo de reformular vou usar assim, talvez te ajude:

$cont_img++;
					if ($cont_img == '1'){
						$salvar_p = $nome_foto;
					}
					if($cont_img == '2'){
						$salvar_g = $nome_foto;
					}

					$resultado = $SQL->Query("UPDATE ptunet_banners SET img_p='".$salvar_p."',img_g='".$salvar_g."' WHERE banner_id = ".$this->topico_id);
Como disse acho que é uma gambiarra, mas provisoriamente pode te ajudar.

 

Não entendi como isso ficaria no código? http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

 

<?php
set_time_limit(0);
if(!(file_exists("funcoes.php"))){
	exit("funcoes.php nao encontrada");
} else {	
	require_once "funcoes.php";
}	 

class Upload
{
	var $arquivo = "";
	var $erro = array ( "0" => "upload executado com sucesso!",
						"1" => "O arquivo é maior que o permitido pelo Servidor",
						"2" => "O arquivo é maior que o permitido pelo formulario",
						"3" => "O upload do arquivo foi feito parcialmente",	
						"4" => "Não foi feito o upload do arquivo"
					   );
		
	function Enviar_Fotos()
	{
		$this->arquivo = isset($_FILES['arquivo']) ? $_FILES['arquivo'] : FALSE;
		
		for($i = 0; $i < 3; $i++){
			$name	 = $this->arquivo['name'][$i];
			$type	 = $this->arquivo['type'][$i];
			$tmp_name = $this->arquivo['tmp_name'][$i];
			$error	= $this->arquivo['error'][$i];
			$size	 = $this->arquivo['size'][$i];			
			
			if(is_uploaded_file($tmp_name)) {
				$this->salvar_fotos($tmp_name, $error);
			} else {
				echo "<span style=\"color: white; border: solid 1px; background: red;\">".$this->erro[$error]."</span><br />";
			}				
		}
	}
	
	function salvar_fotos($tmp_name, $error)
	{
		$diretorio = "fotos/";
		if(!file_exists($diretorio)){
			if(!(mkdir($diretorio))) die("Nao foi possivel criar a pasta fotos");
		}

		$get = getimagesize($tmp_name);
		
		if($get["mime"] != "image/jpeg"){	
			die("<span style=\"color: white; border: solid 1px; background: red;\">Esse arquivo nao é uma imagem valida</span>");
		}
		
		$nome_foto  = "imagem_".microtime().".jpg";		
		$nome_thumb = "thumb_".microtime().".jpg";
		
		if (!(is_writable($diretorio))) {
			die('O diretorio fotos não possui permissão de escrita');
		}
		//determino uma resolução maxima e se a imagem for maior ela sera reduzida
		reduz_imagem($tmp_name, 400, 300, $diretorio.$nome_foto);		
		//passo o tamanho da thumbnail
		reduz_imagem($tmp_name, 120, 90, $diretorio.$nome_thumb);
		echo "<span style=\"color: white; border: solid 1px; background: blue;\">".$this->erro[$error]."</span><br />";
		
		
		// ----------------- Gravar no Banco de Dados ------------------- //

		
	$conexao = mysql_connect("localhost","root","");
		mysql_select_db("upload9");
		

		$sql = "insert INTO dados (foto1, foto2, foto3) Values ('{$_FILES['nome_foto']['name'][$i]}')";
		
		$query = mysql_query($sql);
		
		mysql_close($conexao);
	
	}	
}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom como eu tive que usar dois campos esses dias também, estou meio sem tempo fiz acho que uma gambiarra, mas está funcionando, pelo menos até eu ter tempo de reformular vou usar assim, talvez te ajude:

$cont_img++;
					if ($cont_img == '1'){
						$salvar_p = $nome_foto;
					}
					if($cont_img == '2'){
						$salvar_g = $nome_foto;
					}

					$resultado = $SQL->Query("UPDATE ptunet_banners SET img_p='".$salvar_p."',img_g='".$salvar_g."' WHERE banner_id = ".$this->topico_id);
Como disse acho que é uma gambiarra, mas provisoriamente pode te ajudar.

 

Não entendi como isso ficaria no código? http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

Se eu tenho um loop, a cada "volta" ele gera um nome diferente eu simplesmente defini um nome para cada número desse loop.

 

se tiver 3 campos vai ter 3 voltas e vai er 3 nomes, basta usar isso pra salvar na tabela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Thiago, me corriga se eu estiver errado.

 

 

Na sua tabela, tem um campo "img_p" e outro "img_g"?

 

Nos meus são: "foto1", "foto1_p", "foto2", "foto2_p", "foto3", "foto3_p".

 

 

Minha dúvida está aí. Como coloco a foto (grande) no campo "foto1", e a minitura da foto no campo "foto1_p" e assim respectivamente.

 

Tentei:

$resultado = $SQL->Query("UPDATE dados SET foto1_p='".$salvar_p."',foto1='".$salvar_g."' WHERE dados = ".$this->topico_id);

Mas não vai dar certo (e não deu) porque ela vai tentar salvar sempre no campo foto1.

 

 

O meu problema mesmo é nas strings. Eu sei e entendo a lógica corretamente. Por não dominar PHP, acabo me perdendo!

 

 

Obrigado desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pessoal... eu executei o scrip aqui... mas não estou coneguindo pegar o valor do ultimo id cadastrado...logo no inicio do script cadastro.php...

com a função mysql_insert_id....

 

Eu testei aqui... e vi o seguinte:

 

» No modo que está postado aqui no inicio, o ultimo id é capturado na variável $id_mysql... e depois eh inserida no banco atravéz da chamada da classe: $upload->id_m($id_mysql);...

 

Dessa forma, eu não estou conseguindo inserir o ultimo id... ao contrário... está inserindo sempre o id com valor 1 (um);

 

» Pequei a instrução que insere os dados na tabela... e coloquei logo após a variável $id_mysql:

 

$in=mysql_query("INSERT INTO dados (idade) VALUES ('".$_POST['idade']."')")or die(mysql_error());

$id_mysql=mysql_insert_id();
	
$ins=mysql_query("INSERT INTO imgs (id,imagens,img_th)
VALUES ('".$id_mysql."','nome-qualquer1','nome-qualquer2')")or die(mysql_error());

» O que estou fazendo de errado???

» Como que eu consigo inserir esse ido na tabela???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outra Dúvida....

 

Como eu faço pra verificar os tipos de arquivos como sendo do tipo gif e png, além do jpg?

 

No exemplo, logo no início está assim:

if($get['mime'] != 'image/jpeg')
		{
			#echo "<span style=\"color: white; border: solid 1px; background: red;\">Esse foto nao é uma imagem valida</span>";
			exit;
		}

» Como eu poderia alterar essa verificação???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Warning: set_time_limit() has been disabled for security reasons in /home/a8839486/public_html/TESTES/testeup/class_upload.php on line 2

 

há algum jeito de eu trocar o set time limit??? por favor alguem me ajude! hehe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boas pessoal, tembem eu sou novo por estas bandas, depois de ler varios post achei este porreiro, no entanto tenho aqui um peuqeno problema nesta parte do codigo no ficheiro class_upload.php existem estas linhas que definem o novo nome das imagens:

 

$nome_foto = "imagem_".microtime().".jpg";

$nome_thumb = "thumb_".microtime().".jpg";

 

é facil de perceber que ao retirar o microtime a s imagens vão ficar todas com o mesmo nome e o script acaba por apagar uma atraz das outras de forma que só vamos conseguir a ultima imagem que fizemos upload.

 

A minha questão:

 

será que dá pra colocar o codigo de forma que o nome da 1ª imagem seja ----- qualquercoisa.jpg ------- a 2ª qualquercoisa1.jpg e por ai adiante.

 

fica desde já o meu agradecimento á alma caridosa que me responda pois estou de volta disto á já algum tempo e não chego a lado nenhum, talvez seja porque não percebo muito de php.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, pelo que estudei do código não tem como mandar pro BD, teria que ser feito outra função. Consegui uma aqui que diminui a foto e a thumb, envia pra pasta e BD.

 

Logo mais postarei para vocês.

Compartilhar este post


Link para o post
Compartilhar em outros sites

com voces pediram cá temos o codigo:

 

index.php

 

<?php
if(!(file_exists("class_upload.php"))){
	exit("Classe class_upload.php nao encontrada");
} else {	
	require_once "class_upload.php";
}	 

if($_SERVER["REQUEST_METHOD"] == "POST"){
	$upload = new Upload();
	$upload->Enviar_Fotos();
	exit;
}	

?>
<html>
<head>
<title>Upload</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post" enctype="multipart/form-data" name="form1">
	<input type="file" name="arquivo[]"><br />
	<input type="file" name="arquivo[]"><br /> 
	<input type="file" name="arquivo[]"><br />
	<input type="file" name="arquivo[]"><br />
	<input type="file" name="arquivo[]"><br />
	<input type="file" name="arquivo[]"><br /> 
	<input type="file" name="arquivo[]"><br />
	<input type="file" name="arquivo[]"><br /> 
	<input type="file" name="arquivo[]"><br />
	<input type="file" name="arquivo[]"><br />
	<input type="file" name="arquivo[]"><br />		  
	<input type="file" name="arquivo[]">
	<input type="submit" name="Submit" value="Enviar">
</form>
</body>
</html>

 

funcoes.php

 

<?php
/*Fabyo Guimaraes de Oliveira */
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);
}

?>

class_upload.php

<?php
set_time_limit(0);
if(!(file_exists("funcoes.php"))){
	exit("funcoes.php nao encontrada");
} else {	
	require_once "funcoes.php";
}	 

class Upload
{
	var $arquivo = "";
	var $erro = array ( "0" => "upload execultado com sucesso!",
						"1" => "O arquivo é maior que o permitido pelo Servidor",
						"2" => "O arquivo é maior que o permitido pelo formulario",
						"3" => "O upload do arquivo foi feito parcialmente",	
						"4" => "Não foi feito o upload do arquivo"
					   );
		
	function Enviar_Fotos()
	{
		$this->arquivo = isset($_FILES['arquivo']) ? $_FILES['arquivo'] : FALSE;
		
		for($i = 0; $i < 12; $i++){
			$name	 = $this->arquivo['name'][$i];
			$type	 = $this->arquivo['type'][$i];
			$tmp_name = $this->arquivo['tmp_name'][$i];
			$error	= $this->arquivo['error'][$i];
			$size	 = $this->arquivo['size'][$i];			
			
			if(is_uploaded_file($tmp_name)) {
				$this->salvar_fotos($tmp_name, $error);
			} else {
				echo "<span style=\"color: white; border: solid 1px; background: red;\">".$this->erro[$error]."</span><br />";
			}				
		}
	}
	
	function salvar_fotos($tmp_name, $error)
	{
		$diretorio = "fotos/";
		if(!file_exists($diretorio)){
			if(!(mkdir($diretorio))) die("Nao foi possivel criar a pasta fotos");
		}

		$get = getimagesize($tmp_name);
		
		if($get["mime"] != "image/jpeg"){	
			die("<span style=\"color: white; border: solid 1px; background: red;\">Esse arquivo nao é uma imagem valida</span>");
		}
		
		$nome_foto  = "imagem_[].jpg";		
		$nome_thumb = "thumb_[].jpg";
		
		if (!(is_writable($diretorio))) {
			die('O diretorio fotos não possui permissão de escrita');
		}
		//determino uma resolução maxima e se a imagem for maior ela sera reduzida
		reduz_imagem($tmp_name, 400, 300, $diretorio.$nome_foto);		 
		//passo o tamanho da thumbnail
		reduz_imagem($tmp_name, 120, 90, $diretorio.$nome_thumb);
		echo "<span style=\"color: white; border: solid 1px; background: blue;\">".$this->erro[$error]."</span><br />";
	}	
}

?>

 

 

o meu problema prende-se no class_upload.php quase cá no fim.

 

 

$nome_foto = "imagem_".microtime().".jpg";

$nome_thumb = "thumb_".microtime().".jpg";

 

 

 

será que dá pra colocar o codigo de forma que o nome da 1ª imagem seja ----- qualquercoisa1.jpg ------- a 2ª qualquercoisa2.jpg e por ai adiante.

Compartilhar este post


Link para o post
Compartilhar em outros sites

toto,

para dúvidas novas poste um novo tópico.

 

ao descrever a dúvida poste o que está fazendo e como está fazendo

 

se mostrar-nos que está fazendo algo podemos ajudar.

 

caso queira consulta particular consulte o fórum de Negócios / Serviços

ou o Mercado iMasters -> http://mercado.imasters.com.br

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.