Jump to content

Archived

This topic is now archived and is closed to further replies.

Fabyo

Upload de Imagem

Recommended Posts

funcionou beleza o script!!!

 

so deu esse errinho que parece nao interferir, mas preciso resolver...

 

o que é?

 

Notice: Undefined index: in c:\arquivos de programas\easyphp1-8\www\casa nova\class_upload.php on line 31

 

line31: <div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>echo

 

"<span style=\"color: white; border: solid 1px; background: #333333;\">".$this->erro[$this->arquivo['error']]."</span>";</div>

 

Valew galera!

Share this post


Link to post
Share on other sites

script excelente, funcionando perfeitamente, mas como eu faria para fazer o upload multiplo? por exemplo o "selecionador" de imagens é feito em flash, dai apos as imagens serem selecionadas, o flash me envia por post um numero x de endereços, como eu faria para subi-las e gerar as thumbnails dessa maneira?

Share this post


Link to post
Share on other sites

Olá galera, Gostei Muito deste Script do Fabyo, mas acho que configurar, Tamanho de Thumb, Tamanho de foto e Diretório, diretamente não é uma boa, sei que o Fabyo colocou o Script só para Exercicios, mas tem uma galera por ai, que quer só copiar e colar.... (e não importa o que agente faça, eles vão fazer isso sempre). Portanto resolvi fazer algumas modificações pra facilitar a vida da galerinah ai... uma oura coisa, foi arrumar a rotina, pra poder fazer um teste booleano, pra poder gravar os dados no banco.... Uma outra coisa que eu fiz, foi gravar o thumb e a foto em pastas direrentes, pra gravar uma vez soh a informação no banco, pra que duas vezes? No final da classe retorna o nome da foto, assim a galera pode facilmente adicionar mais $_POSTs pra qualquer finalidade que quizer.... e gravar no banco.

 

Aproveitei tb pra caso os carinhas ai não tenham instalado a sua biblioteca GD, mostra uma mensagenzinha pra eles....

 

Só me tirem uma dúvida, por que está dando 2 vezes a imagem de conformação?

 

Por favor, confimem pra mim se está tudo ok? beleza?

 

Segue os arquivos...

 

class.upload.php

 

<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'><?

set_time_limit(0);

/*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

{ var $nome = "";

 

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.\n Tente Novamente.",

"4" => "Não foi feito o upload do arquivo.\Tente Novamente."

);

 

function Verifica_Upload()

{

$this->arquivo = isset($_FILES['arquivo']) ? $_FILES['arquivo'] : FALSE;

if(!is_uploaded_file($this->arquivo['tmp_name'])) {

return false;

}

$get = getimagesize($this->arquivo['tmp_name']);

 

if($get["mime"] != "image/jpeg")

{

echo '<script type="text/javascript"> alert("Este não é um arquivo .JPG!\nPor favor tente Novamente.");</script>';

echo '<script type="text/javascript"> window.location.href="'.$_SERVER['PHP_SELF'].'"; </script>';

exit;

}

return true;

}

 

 

function Envia_Arquivo($xt,$yt,$xf,$yf,$namefoto,$pathf)

{ if(!function_exists("imagecreate"))

{

echo "Instale a Biblioteca GD em Seu Apache!";

exit;

}

 

if($this->Verifica_Upload()) {

$this->gera_fotos($xt,$yt,$xf,$yf,$namefoto,$pathf);

return true;

} else {

echo '<script type="text/javascript">alert("'.$this->erro[$this->arquivo['error']].'");</script>';

return false;

}

 

}

 

function gera_fotos($xt,$yt,$xf,$yf,$namefoto,$pathf)

{

$diretoriot = $pathf."thumbs/";

$diretoriof = $pathf;

if(!file_exists($diretoriof))

{

mkdir($diretoriof);

}

if(!file_exists($diretoriot))

{

 

mkdir($diretoriot);

}

 

$nome_foto = $namefoto.time().".jpg";

 

//determino uma resolução maxima e se a imagem for maior ela sera reduzida

reduz_imagem($this->arquivo['tmp_name'], $xf, $yf, $diretoriof.$nome_foto);

//passo o tamanho da thumbnail

reduz_imagem($this->arquivo['tmp_name'], $xt, $yt, $diretoriot.$nome_foto);

echo '<script type="text/javascript">alert("'.$this->erro[$this->arquivo['error']].'");</script>';

$this->nome=$nome_foto;

}

 

 

}

 

?>

 

</div>

 

index.php

 

<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'><?

if((isset($_GET['operacao'])) && ($_GET['operacao'] == "gravar"))

{

require_once "class.upload.php";

$upload = new Upload();

// chamando a função X thumb, Y thumb, X Foto, Y foto, Prefixo Foto, Diretorio Thums, Diretorio, Foto

$upload->Envia_Arquivo(50,50,500,500, "foto_","fotosssss/");

if($upload == true)

{

echo 'O nome do arquivo é '.$upload->nome.'<br>OK! Pode Gravar os dados no Banco!';

}

else

{

echo "Não Grava, por que deu pau!";

}

}

 

 

?>

<html>

<head>

<title>Upload</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

<body>

<form action="index.php?operacao=gravar" method="post" enctype="multipart/form-data" name="form1">

<input type="file" name="arquivo">

<input type="submit" name="Submit" value="Enviar">

</form>

</body>

</html>

 

</div>

 

Espero ter ajudado, e espero não ter piorado o Código, pois tava bem baum já...hehehe

Share this post


Link to post
Share on other sites

Wolf

E para checar formato e tamanho de imagem validos, onde eu deveria inserir os codigos, to meio confuso com o lugar certo:

Valeu

 

 

Fiz algumas alterações no seu script para ele aceitar imagens GIF e PNG... e salvando tb o nome do arquivo no banco de dados...

 

Só uma dica viu povo.. que tem muita gente que passa batido numa coisa... sempre que você for mandar uma rquivo pelo form você tem que ter isso escrito na TAG do form...: enctype="multipart/form-data" senaum naum funciona.

 

index.php

<?php	require_once("class_upload.php");		$upload = new Upload();	$upload->Envia_Arquivo();?><html><head><title>Upload</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head><body><form action="index.php" method="post" enctype="multipart/form-data" name="form1">  <input type="file" name="arquivo">  <input type="submit" name="Submit" value="Enviar"></form></body></html>
class_upload.php

<?php	set_time_limit(0);	include "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 Verifica_Upload() {			$this->arquivo = isset($_FILES['arquivo']) ? $_FILES['arquivo'] : FALSE;			if(!is_uploaded_file($this->arquivo['tmp_name'])) {				return false;			}			$get = getimagesize($this->arquivo['tmp_name']);						if(($get["mime"] != "image/jpeg") AND ($get["mime"] != "image/gif") AND ($get["mime"] != "image/png")) {				echo "<span style=\"color: white; border: solid 1px; background: red;\">Esse foto nao é uma imagem valida</span>";				exit;			}			return true;		}				function Envia_Arquivo() {			if($this->Verifica_Upload()) {				$this->gera_fotos();				return true;				} else {					echo "<span style=\"color: white; border: solid 1px; background: red;\">".$this->erro[$this->arquivo['error']]."</span>";			}		}				function gera_fotos() {			$diretorio = "fotos/";			$diretorio_g = "fotos/g/";			$diretorio_p = "fotos/p/";			if(!file_exists($diretorio)) {				mkdir($diretorio);			}			if(!file_exists($diretorio_g)) {				mkdir($diretorio_g);			}			if(!file_exists($diretorio_p)) {				mkdir($diretorio_p);			}						$get2 = getimagesize($this->arquivo['tmp_name']); /* Vai servir para verificar se eh GIF ou JPG ou PNG*/			$aux_tipo_imagem = $get2["mime"]; /* Vai servir para verificar se eh GIF ou JPG ou PNG*/						if ($aux_tipo_imagem == "image/jpeg") {				$nome_foto  = "imagem_".time().".jpg";				$nome_thumb = "thumb_".time().".jpg";				//determino uma resolução maxima e se a imagem for maior ela sera reduzida				reduz_imagem_jpg($this->arquivo['tmp_name'], 400, 300, $diretorio_g.$nome_foto);				//passo o tamanho da thumbnail				reduz_imagem_jpg($this->arquivo['tmp_name'], 120, 90, $diretorio_p.$nome_thumb);			}						if ($aux_tipo_imagem == "image/gif") {				$nome_foto  = "imagem_".time().".gif";				$nome_thumb = "thumb_".time().".gif";				//determino uma resolução maxima e se a imagem for maior ela sera reduzida				reduz_imagem_gif($this->arquivo['tmp_name'], 400, 300, $diretorio_g.$nome_foto);				//passo o tamanho da thumbnail				reduz_imagem_gif($this->arquivo['tmp_name'], 120, 90, $diretorio_p.$nome_thumb);			}						if ($aux_tipo_imagem == "image/png") {				$nome_foto  = "imagem_".time().".png";				$nome_thumb = "thumb_".time().".png";				//determino uma resolução maxima e se a imagem for maior ela sera reduzida				reduz_imagem_png($this->arquivo['tmp_name'], 400, 300, $diretorio_g.$nome_foto);				//passo o tamanho da thumbnail				reduz_imagem_png($this->arquivo['tmp_name'], 120, 90, $diretorio_p.$nome_thumb);			}						echo "<span style=\"color: white; border: solid 1px; background: purple;\">".$this->erro[$this->arquivo['error']]."</span>";						// Isso aqui faz gravar o nome do arquivo no banco de dados, lembrando que você deve fazer a conexao antes... :D			mysql_query("INSERT INTO tb_imagens SET imagem_p='$nome_thumb', imagem_g='$nome_foto'");		}	}?>
funcoes.php

<?php//########################  Função para imagem JPG ###########################	function reduz_imagem_jpg($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);	}	//########################  Função para imagem GIF ###########################		function reduz_imagem_gif($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   = imagecreatefromgif($img);				imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height);				return imagegif($image_p, $nome_foto, 100);	}		//########################  Função para imagem PNG ###########################		function reduz_imagem_png($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   = imagecreatefrompng($img);				imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height);				return imagepng($image_p, $nome_foto, 100);	}?>

Share this post


Link to post
Share on other sites

alguem poderia me dar uma ajudazinha pra verificar a necessidade de alteracao do tamanho da imagem?pois ela é aumentada se for menor... entao eu gostaria do seguinte:se ela for menor que o determinado, nao redimensionar...grato desde ja...valew!

Share this post


Link to post
Share on other sites

index.php

 

<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'><?

if((isset($_GET['operacao'])) && ($_GET['operacao'] == "gravar"))

{

require_once "class.upload.php";

$upload = new Upload();

// chamando a função X thumb, Y thumb, X Foto, Y foto, Prefixo Foto, Diretorio Thums, Diretorio, Foto

$upload->Envia_Arquivo(50,50,500,500, "foto_","fotosssss/");

if($upload == true)

{

echo 'O nome do arquivo é '.$upload->nome.'<br>OK! Pode Gravar os dados no Banco!';

}

else

{

echo "Não Grava, por que deu pau!";

}

}

 

 

?>

<html>

<head>

<title>Upload</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

<body>

<form action="index.php?operacao=gravar" method="post" enctype="multipart/form-data" name="form1">

<input type="file" name="arquivo">

<input type="submit" name="Submit" value="Enviar">

</form>

</body>

</html>

 

</div>

 

Espero ter ajudado, e espero não ter piorado o Código, pois tava bem baum já...hehehe

 

 

 

 

 

 

a funcionar aqui:http://members.lycos.co.uk/megaliticos/upload3/

Share this post


Link to post
Share on other sites

Colegas...O Script funcionou que é uma beleza em meu sistema....Só quero saber como fazer para que possa tabem fazer um UPDATE. Fiz todos os procedimentos que faria com texto....Mudei de Insert para Update, ele até salva na pasta a imagem, mas não vai pro banco de dados.Se alguém souber como fazer...

Share this post


Link to post
Share on other sites

Fabio

 

Como você é o pai da criança, pergunto p ti:

 

como fazer:

se nao houver foto, mesmo assim fazer a gravacao no bd dos outros dados

 

se ela for menor que o determinado, nao redimensionar...

 

como fazer para que possa tabem fazer um UPDATE.

Essas duvidas se você ver por ai nao sao só minhas.

 

No meu caso estou usando o upload em conjunto com a inserção de dados no bd, mas a foto tem q ser opcional o envio, ja tentei ifs e mais ifs, mas acho q estou colocando no lugar errado.

 

Se puder ajudar salva um menino da forca rsrs

abs

Share this post


Link to post
Share on other sites

Index.php - Multiplos Arquivos=====================================================<?php require_once("class_upload.php"); $upload = new Upload(); $upload->Envia_Arquivo();?><html><head><title>Upload</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head><body><form action="index.php" method="post" enctype="multipart/form-data" name="form1"> <?for($i=0;$i < 15;$i++){?><input type="file" name="arquivo[]" id="arquivo[]"><?}?> <input type="submit" name="Submit" value="Enviar"></form></body></html>=================================================Agora falta fazer o "class_upload.php " -- to iniciando no PHP e tb to precisando disso :) - Multiplos Uploads

Share this post


Link to post
Share on other sites

ola,

 

meu sistema esta reduzindo largura e altura casao a imagem seja maior e inverso se for menor, mas estou com o problema que é o seguinte; limitei a imagem de no maximo 50kb só q qdo cadastro uma imagem q tem menos que 50kb e ela é menor ou maior q o tamanho definido ela altera exemplo para 120kb...

 

to no aguardo

Share this post


Link to post
Share on other sites

Mt bom o script, agora estou tentando mandar uma img de 1MB e nao funciona publicado, so local, da erro de pagina 500, outra no resultado final ai img ta pesada tem como dominuir a qualidade?

vlws!

Share this post


Link to post
Share on other sites

Mt bom o script, agora estou tentando mandar uma img de 1MB e nao funciona publicado, so local, da erro de pagina 500, outra no resultado final ai img ta pesada tem como dominuir a qualidade?

vlws!

mike, para deixar a imagem mais leve, você deve mudar a qualidade de conversão na seguinte linha do arquivo funcoes.php:

 

return imagejpeg($image_p, $nome_foto, 100); "recomendo mudar o 100 para 85 ou 80"

 

para aumentar o limite do tamanho do arquivo enviado, você deve mudar no php.ini a alguma coisa relativa a MAX_FILESIZE ou MAX_UPLOAD_FILE nao me lembro bem e to sem o php instalado aki na máquina, mas da uma olhada aih... tenho certeza q vai funcionar...

 

um abraço!

bruno

Share this post


Link to post
Share on other sites

Bom galera gostaria de ver se alguem pode me ajudar !!!

 

O script funciona perfeitamente na minha localhost, só que quando coloco na web, ele da o seguinte erro!!

 

"Warning: imagejpeg() [function.imagejpeg]: Unable to open 'fotos/p/thumb_1196880616.jpg' for writing in /home/restricted/home/vetor-design/public_html/portocultura/espera/admin/adm/noticia/funcoes.php on line 27

upload execultado com sucesso! "

 

A minha hospedagem é na locaweb.

 

Agradeço desde já

Share this post


Link to post
Share on other sites

Nosssa Fábio ,,,que rapidez,,,,obrigado pela ajuda,

 

Mas tipo, sabe se tenho que ver isso com a locaweb???

 

Desculpa a minha ignorancia, mas estou começando agora a desenvolver e será que você pode ser mais especifíco..

 

obrigado

ricardo

Share this post


Link to post
Share on other sites

Olá pessoal estou tentando fazer um upload de imagens também mas não baseado nesse código e está dando o seguinte erro:

Forbidden

You don't have permission to access /nortefog/< on this server.

 

 

--------------------------------------------------------------------------------

 

Apache/2.0.59 (Win32) PHP/5.2.0 Server at localhost Port 80

Eu já habilitei a GD no meu servidor o que pode ser?

 

 

Olá pessoal estou tentando fazer um upload de imagens também mas não baseado nesse código e está dando o seguinte erro:

Forbidden

You don't have permission to access /nortefog/< on this server.

 

 

--------------------------------------------------------------------------------

 

Apache/2.0.59 (Win32) PHP/5.2.0 Server at localhost Port 80

Eu já habilitei a GD no meu servidor o que pode ser?

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.