Jump to content
Sign in to follow this  
fantasma

Problemas em upload

Recommended Posts

fantasma

Boa Noite

Tenho um projecto em PHP e, tedo uma área de uploads de imagem no meu site, utilizo uma classe que vi na net para fazer o resize ou crop

A classe é esta

<?php

   # ========================================================================#
   #
   #  Author:    Jarrod Oberto
   #  Version:	 1.0
   #  Date:      17-Jan-10
   #  Purpose:   Resizes and saves image
   #  Requires : Requires PHP5, GD library.
   #  Usage Example:
   #                     include("classes/resize_class.php");
   #                     $resizeObj = new resize('images/cars/large/input.jpg');
   #                     $resizeObj -> resizeImage(150, 100, 0);
   #                     $resizeObj -> saveImage('images/cars/large/output.jpg', 100);
   #
   #
   # ========================================================================#


	Class resize
	{
		// *** Class variables
		private $image;
	    private $width;
	    private $height;
		private $imageResized;

		function __construct($fileName)
		{
			// *** Open up the file
			$this->image = $this->openImage($fileName);

		    // *** Get width and height
		    $this->width  = imagesx($this->image);
		    $this->height = imagesy($this->image);
		}

		## --------------------------------------------------------

		private function openImage($file)
		{
			// *** Get extension
			$extension = strtolower(strrchr($file, '.'));

			switch($extension)
			{
				case '.jpg':
					$img = @imagecreatefromjpeg($file);
					break;
				case '.jpeg':
					$img = @imagecreatefromjpeg($file);
					break;
				case '.gif':
					$img = @imagecreatefromgif($file);
					break;
				case '.png':
					$img = @imagecreatefrompng($file);
					break;
				default:
					$img = false;
					break;
			}
			return $img;
		}

		## --------------------------------------------------------

		public function resizeImage($newWidth, $newHeight, $option="auto")
		{
			// *** Get optimal width and height - based on $option
			$optionArray = $this->getDimensions($newWidth, $newHeight, $option);

			$optimalWidth  = $optionArray['optimalWidth'];
			$optimalHeight = $optionArray['optimalHeight'];


			// *** Resample - create image canvas of x, y size
			$this->imageResized = imagecreatetruecolor($optimalWidth, $optimalHeight);
			imagecopyresampled($this->imageResized, $this->image, 0, 0, 0, 0, $optimalWidth, $optimalHeight, $this->width, $this->height);


			// *** if option is 'crop', then crop too
			if ($option == 'crop') {
				$this->crop($optimalWidth, $optimalHeight, $newWidth, $newHeight);
			}
		}

		## --------------------------------------------------------

		private function getDimensions($newWidth, $newHeight, $option)
		{

		   switch ($option)
			{
				case 'exact':
					$optimalWidth = $newWidth;
					$optimalHeight= $newHeight;
					break;
				case 'portrait':
					$optimalWidth = $this->getSizeByFixedHeight($newHeight);
					$optimalHeight= $newHeight;
					break;
				case 'landscape':
					$optimalWidth = $newWidth;
					$optimalHeight= $this->getSizeByFixedWidth($newWidth);
					break;
				case 'auto':
					$optionArray = $this->getSizeByAuto($newWidth, $newHeight);
					$optimalWidth = $optionArray['optimalWidth'];
					$optimalHeight = $optionArray['optimalHeight'];
					break;
				case 'crop':
					$optionArray = $this->getOptimalCrop($newWidth, $newHeight);
					$optimalWidth = $optionArray['optimalWidth'];
					$optimalHeight = $optionArray['optimalHeight'];
					break;
			}
			return array('optimalWidth' => $optimalWidth, 'optimalHeight' => $optimalHeight);
		}

		## --------------------------------------------------------

		private function getSizeByFixedHeight($newHeight)
		{
			$ratio = $this->width / $this->height;
			$newWidth = $newHeight * $ratio;
			return $newWidth;
		}

		private function getSizeByFixedWidth($newWidth)
		{
			$ratio = $this->height / $this->width;
			$newHeight = $newWidth * $ratio;
			return $newHeight;
		}

		private function getSizeByAuto($newWidth, $newHeight)
		{
			if ($this->height < $this->width)
			// *** Image to be resized is wider (landscape)
			{
				$optimalWidth = $newWidth;
				$optimalHeight= $this->getSizeByFixedWidth($newWidth);
			}
			elseif ($this->height > $this->width)
			// *** Image to be resized is taller (portrait)
			{
				$optimalWidth = $this->getSizeByFixedHeight($newHeight);
				$optimalHeight= $newHeight;
			}
			else
			// *** Image to be resizerd is a square
			{
				if ($newHeight < $newWidth) {
					$optimalWidth = $newWidth;
					$optimalHeight= $this->getSizeByFixedWidth($newWidth);
				} else if ($newHeight > $newWidth) {
					$optimalWidth = $this->getSizeByFixedHeight($newHeight);
					$optimalHeight= $newHeight;
				} else {
					// *** Sqaure being resized to a square
					$optimalWidth = $newWidth;
					$optimalHeight= $newHeight;
				}
			}

			return array('optimalWidth' => $optimalWidth, 'optimalHeight' => $optimalHeight);
		}

		## --------------------------------------------------------

		private function getOptimalCrop($newWidth, $newHeight)
		{

			$heightRatio = $this->height / $newHeight;
			$widthRatio  = $this->width /  $newWidth;

			if ($heightRatio < $widthRatio) {
				$optimalRatio = $heightRatio;
			} else {
				$optimalRatio = $widthRatio;
			}

			$optimalHeight = $this->height / $optimalRatio;
			$optimalWidth  = $this->width  / $optimalRatio;

			return array('optimalWidth' => $optimalWidth, 'optimalHeight' => $optimalHeight);
		}

		## --------------------------------------------------------

		private function crop($optimalWidth, $optimalHeight, $newWidth, $newHeight)
		{
			// *** Find center - this will be used for the crop
			$cropStartX = ( $optimalWidth / 2) - ( $newWidth /2 );
			$cropStartY = ( $optimalHeight/ 2) - ( $newHeight/2 );

			$crop = $this->imageResized;
			//imagedestroy($this->imageResized);

			// *** Now crop from center to exact requested size
			$this->imageResized = imagecreatetruecolor($newWidth , $newHeight);
			imagecopyresampled($this->imageResized, $crop , 0, 0, $cropStartX, $cropStartY, $newWidth, $newHeight , $newWidth, $newHeight);
		}

		## --------------------------------------------------------

		public function saveImage($savePath, $imageQuality="100")
		{
			// *** Get extension
        		$extension = strrchr($savePath, '.');
       			$extension = strtolower($extension);

			switch($extension)
			{
				case '.jpg':
				case '.jpeg':
					if (imagetypes() & IMG_JPG) {
						imagejpeg($this->imageResized, $savePath, $imageQuality);
					}
					break;

				case '.gif':
					if (imagetypes() & IMG_GIF) {
						imagegif($this->imageResized, $savePath);
					}
					break;

				case '.png':
					// *** Scale quality from 0-100 to 0-9
					$scaleQuality = round(($imageQuality/100) * 9);

					// *** Invert quality setting as 0 is best, not 9
					$invertScaleQuality = 9 - $scaleQuality;

					if (imagetypes() & IMG_PNG) {
						 imagepng($this->imageResized, $savePath, $invertScaleQuality);
					}
					break;

				// ... etc

				default:
					// *** No extension - No save.
					break;
			}

			imagedestroy($this->imageResized);
		}


		## --------------------------------------------------------

	}
?>

Utilizando esta classe para imagens png e gif nunca me deu problemas. Agora para JPG(principalmente) e JPEG aparece-me insistentemente (mas não para todas as imagens desta extensão) este erro:


../img/portfolio/../img/portfolio/hydrangeas.jpg../img/portfolio/newhydrangeas.jpgUpload do ficheiro com sucesso
Warning: getimagesize(../img/portfolio/hydrangeas.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /home/pg26631/public_html/upload/upload.php on line 166

Warning: imagesx(): supplied argument is not a valid Image resource in /home/pg26631/public_html/includes/resize-class.php on line 34

Warning: imagesy(): supplied argument is not a valid Image resource in /home/pg26631/public_html/includes/resize-class.php on line 35

Warning: imagesx(): supplied argument is not a valid Image resource in /home/pg26631/public_html/includes/resize-class.php on line 34

Warning: imagesy(): supplied argument is not a valid Image resource in /home/pg26631/public_html/includes/resize-class.php on line 35

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /home/pg26631/public_html/includes/resize-class.php on line 78

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /home/pg26631/public_html/includes/resize-class.php on line 79

Warning: Division by zero in /home/pg26631/public_html/includes/resize-class.php on line 184

Warning: Division by zero in /home/pg26631/public_html/includes/resize-class.php on line 185

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /home/pg26631/public_html/includes/resize-class.php on line 78

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /home/pg26631/public_html/includes/resize-class.php on line 79

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /home/pg26631/public_html/includes/resize-class.php on line 203

Warning: imagejpeg(): supplied argument is not a valid Image resource in /home/pg26631/public_html/includes/resize-class.php on line 219

Warning: imagedestroy(): supplied argument is not a valid Image resource in /home/pg26631/public_html/includes/resize-class.php on line 248
Inserçao de imagem com sucesso

Após isto, o upload da imagem é efectuado, mas o thumbnail com o crop não aparece.

Agradeço qualquer tipo de ajuda!

Obrigado

PS: As imagens de exemplo que tem na pasta imagens do Windows são um exemplo que gera este erro

Share this post


Link to post
Share on other sites
mAiN_iNfEcTiOn

Olá fantasma,

Se possível, coloca aqui o código do ficheiro /home/pg26631/public_html/upload/upload.php, salvaguardando os teus dados pessoais que possas conter nesse script :)

Share this post


Link to post
Share on other sites
fantasma

Aqui está ele

<?php

include '../includes/bdconn.php';
include '../includes/resize-class.php';


// VALIDAÇÃO DO UPLOAD



$ext_permitidas = array(".jpg",".jpeg",".gif",".png");
$tamanho_max = 1024*3072; // APROX 3MB



if( isset($_GET['mod']) )
{
  
       $db = mysql_real_escape_string(($_GET['mod']));
        
        function configs($db){
            
            switch ( $db ){

			case 'modulo';
				$tem_thumb=false;
				$img_mod = true;
				$id_mod = mysql_real_escape_string($_POST['id_modulo']);
				$sqlp = "SELECT nome_mod FROM modulos WHERE id_modulo ='$id_mod'";
				$query = mysql_query($sqlp);
				if(!$query)
				{
					echo "Erro na base de dados".mysql_error();
				}
				$row = mysql_fetch_assoc($query);
				$dir=strtolower($row['nome_mod']);
				$pasta = "../img/".$dir."/";
				if(!file_exists($pasta))
					mkdir($pasta);

			return
				array(
					"tem_thumb"=>$tem_thumb,
					"altura"=>350,
					"largura"=>250,
					"pasta"=>$pasta,
					"img_mod"=>$img_mod,
					"id_mod"=>$id_mod,
					"return"=>"back_".$dir
					);
			break;


                case 'content_empresa';
				$tem_thumb = false;
                  
				return 
					array(
					"pasta"=>"../img/empresa",
					"altura"=>350,
					"largura"=>250,						
					"return"=>"back_empresa",
					"tem_thumb"=>$tem_thumb
					);
                    break;
                case 'noticias';

				$tem_thumb = true;
				$e_noticia = true;
				$id_ret=0;

				if(isset($_GET['id_int']))
				{
					$id_not = mysql_real_escape_string($_GET['id_int']);
				}
				else
					echo "ocorreu um erro";
				return 
					array(
					"pasta"=>"../img/noticias/",
					"largura"=>750,
					"altura"=>325,
					"altura_thumb"=>100,
					"largura_thumb"=>100,
					"idnoticia"=>$id_not,
					"caminho_bd"=>"img/noticias/",						
					"return"=>"back_noticias",
					"tem_thumb"=>$tem_thumb,
					"e_noticia"=>$e_noticia
					);
                    break;
			case 'portfolio';



				$id_galeria = mysql_real_escape_string($_POST['id_galeria']);
				$descricao = mysql_real_escape_string($_POST['descr_galeria']);
				$id_menu = mysql_real_escape_string($_POST['id_menu']);
				return
					array(
						"pasta"=>"../img/portfolio/",
						"tem_thumb"=>true,
						"e_noticia"=>false,
						"e_portfolio"=>true,
						"id_galeria"=>$id_galeria,
						"descricao"=>$descricao,
						"caminho_bd"=>"img/portfolio/",							
						"altura_thumb"=>75,
						"largura_thumb"=>75,
						"option"=>"id_menu=$id_menu",
						"return"=>"back_noticias"
					);
            } 
        }
        
    }
else
{

	echo 'a variavel nao existe!';
}



$configs = configs($db);

echo $configs['pasta'];

$upload_dir = $configs['pasta'];
$filename = $_FILES['image']['name'];

$ficheiro = strtolower($upload_dir.$filename);

$caminho = strtolower($upload_dir.'new'.$filename);
echo $ficheiro;
echo $caminho;

$extensao = substr($filename, strpos($filename,'.'), strlen($filename)-1);
$ext = strtolower($extensao);

if(!in_array($ext,$ext_permitidas))
    die('A extensão da imagem '.$ext.' não é permitida');

if(filesize($_FILES['image']['tmp_name']) > $tamanho_max)
    die('O tamanho do ficheiro é demasiado grande');

if(!is_writable($upload_dir))
    die('O ficheiro especificado não permite a escrita. Por favor altere as permissões');


if(move_uploaded_file($_FILES['image']['tmp_name'],$upload_dir . $filename))

         echo 'Upload do ficheiro com sucesso';

else
         echo 'Ocorreu um erro. Ficheiro não carregado.';







if($db == 'portfolio')
{
	list($largura,$altura, , ) = getimagesize($ficheiro);
}
else
{
	$largura = $configs['largura'];
	$altura = $configs['altura'];
}

if($configs['tem_thumb'])
{
$largura_thumb = $configs['largura_thumb'];
$altura_thumb = $configs['altura_thumb'];
$caminho_thumb = $upload_dir.'thumbnail'.$filename;

// *** 1) Initialise / load image
$resizeObj = new resize($ficheiro);
$resizeObjThumb = new resize($ficheiro);
// *** 2) Resize image (options: exact, portrait, landscape, auto, crop)
$resizeObj -> resizeImage($largura, $altura, 'exact');
$resizeObjThumb -> resizeImage($largura_thumb, $altura_thumb,'crop');
// *** 3) Save image
$resizeObj -> saveImage($caminho, 100);
$resizeObjThumb ->saveImage($caminho_thumb,100);

if($configs['e_noticia'])
{
	$id_not = $configs['idnoticia'];
	$caminho_bd = str_replace("../","",$caminho);
	$caminho_thumb_bd = str_replace("../","",$caminho_thumb);
	$sqld = "SELECT titulo_noticia FROM noticias WHERE ID = '$id_not'";

	$query1=mysql_query($sqld,$conn);
	if($query1)
		{
			$row1 = mysql_fetch_row($query1);
			$descricao = $row1[0];
		}
	else 
		echo "Ocorreu um erro".mysql_error();


	$sql = "INSERT INTO imagens (ID,caminho, caminho_thumb,tipo,descricao) VALUES ('NULL','$caminho_bd','$caminho_thumb_bd',1,'$descricao')";
	if($query2 = mysql_query($sql,$conn))
		echo "Inserçao de imagem com sucesso";
	else 
		echo "Ocorreu um erro".mysql_error();
	$id_ret = mysql_insert_id();
	$sqlx = "UPDATE noticias SET ID_IMG = '$id_ret' WHERE ID = '$id_not'";
	if($query3 = mysql_query($sqlx,$conn))
		echo "";
	else 
		echo "Ocorreu um erro".mysql_error();
}
elseif($configs['e_portfolio'])
{

	$caminho_bd = str_replace("../","",$caminho);
	$caminho_thumb_bd = str_replace("../","",$caminho_thumb);
	$descricao = $configs['descricao'];
	$id_galeria =  $configs['id_galeria'];


	$sql = "INSERT INTO imagens (ID,caminho, caminho_thumb,tipo,descricao,id_galeria) VALUES ('NULL','$caminho_bd','$caminho_thumb_bd',1,'$descricao','$id_galeria')";
		if($query2 = mysql_query($sql,$conn))
			echo "Inserçao de imagem com sucesso";
		else 
			echo "Ocorreu um erro".mysql_error();



}


}
else
{

$resizeObj = new resize($ficheiro);

// *** 2) Resize image (options: exact, portrait, landscape, auto, crop)
$resizeObj -> resizeImage($largura, $altura, 'crop');

// *** 3) Save image
$resizeObj -> saveImage($caminho, 100);
if($configs['img_mod'])
{
		$id_mod = $configs['id_mod'];
		$caminho_bd = str_replace("../","",$caminho);


		$sql = "INSERT INTO imagens (ID,caminho, caminho_thumb,tipo,descricao) VALUES ('NULL','$caminho_bd','NULL',1,'NULL')";
		if($query2 = mysql_query($sql,$conn))
			echo "Inserçao de imagem com sucesso";
		else 
			echo "Ocorreu um erro".mysql_error();
		$id_ret = mysql_insert_id();
		$sqlx = "UPDATE modulos SET ID_IMG = '$id_ret' WHERE id_modulo = '$id_mod'";
		if($query3 = mysql_query($sqlx,$conn))
			echo "";
		else 
			echo "Ocorreu um erro".mysql_error();
}
}


if(isset($variaveis['option']))
	{
		echo $option = $variaveis['option'];
		//print "<meta http-equiv=\"refresh\" content=\"2;URL=../backoffice/$redirect.php?$option\">";
	}
//else
	//print "<meta http-equiv=\"refresh\" content=\"2;URL=../backoffice/$redirect.php'\">";


?>

Share this post


Link to post
Share on other sites
mAiN_iNfEcTiOn

Bom dia fantasma,

Onde tens:

$filename = $_FILES['image']['name'];

Deverás fazer um url_encode do nome... Porque, no caso das imagens do windows, muitas têm nomes separados ou caracteres especiais (com acentos, etc) como "Nenúfares do Lago" ou coisas assim... ou "Pôr-do-Sol"... E em alguns casos invalida o nome total :) Assim:

$fileinfo = pathinfo($_FILES['image']['name']);
$filename = url_encode($fileinfo['basename']) . '.' . $fileinfo['extension'];

É uma maneira.... de qualquer forma, deves ter em atenção que se fazes upload do mesmo ficheiro 2 vezes, o teu sistema poderá fazer uma de duas coisas:

[*]Fazer overwrite do ficheiro antigo pelo actual

[*]Dar erro porque o ficheiro está em uso

Por tanto, o meu conselho até é gerares um id único, com o timestamp como prefixo para saber a data de criação, para o nome (algo assim):



$fileinfo = pathinfo($_FILES['image']['name']);
$filename = uniqid(time()) . '.' . $fileinfo['extension'];

Testa isto e, se continuar a dar o erro, continuaremos a debuggar

Share this post


Link to post
Share on other sites
fantasma

Aquelas imagens do windows agora funcionam na perfeição! Muito obrigado!  :)

Agora, imagens tiradas de máquina digital (ex: P1010162.jpg) é que nada feito... dá o mesmo erro. Alguma ideia do que será?

Share this post


Link to post
Share on other sites
mAiN_iNfEcTiOn

Hmmm... estranho...

Confirma se consegues abrir a imagem no sistema operativo;

Confirma se a imagem não tem um tamanho superior ao limite (não deverá ter para dar erro)

Confirma se a extensão é mesmo .jpg ou é .jpeg....

Share this post


Link to post
Share on other sites
mAiN_iNfEcTiOn

AH ... já sei qual é o problema... ;) Falha tua também claro:

Onde tens:

$ficheiro = strtolower($upload_dir.$filename);
$caminho = strtolower($upload_dir.'new'.$filename);

Deverá ficar:

$filename = strtolower($filename); # Logico que isto, podes fazer na altura que defines o $filename, meter logo o strtolower()
$ficheiro = strtolower($upload_dir.$filename);
$caminho = strtolower($upload_dir.'new'.$filename);

Porque nesse caso ... o nome está em maiúsculas (P1010162.jpg) e tu ao fazeres o strtolower para definires a var $ficheiro, estás a colocar tudo em minúsculas e - pelo menos em Linux - "P1010162" != "p1010162" ok?.

E tu dizes "Mas não estou a ver qual é o problema ainda" ... O problema é que quando fazes:

list($largura,$altura, , ) = getimagesize($ficheiro);

O nome do ficheiro é diferente do move_uploaded_file() onde usaste o $filename (que tem o nome em maiúsculas) :);)

Testa ;):P Vais ver que vais perceber

Share this post


Link to post
Share on other sites
fantasma

Estranho... fiz o que disseste e continua a não funcionar...

Em localhost dá este erro:

../img/portfolio/../img/portfolio/13057996274dd4ebcb3188c.jpg../img/portfolio/new13057996274dd4ebcb3188c.jpgOcorreu um erro. Ficheiro não carregado.
Warning: getimagesize(../img/portfolio/13057996274dd4ebcb3188c.jpg) [function.getimagesize]: failed to open stream: No such file or directory in C:\wamp\www\ArtZende\upload\upload.php on line 167

Warning: imagesx() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 34

Warning: imagesy() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 35

Warning: imagesx() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 34

Warning: imagesy() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 35

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in C:\wamp\www\ArtZende\includes\resize-class.php on line 78

Warning: imagecopyresampled() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 79

Warning: Division by zero in C:\wamp\www\ArtZende\includes\resize-class.php on line 184

Warning: Division by zero in C:\wamp\www\ArtZende\includes\resize-class.php on line 185

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in C:\wamp\www\ArtZende\includes\resize-class.php on line 78

Warning: imagecopyresampled() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 79

Warning: imagecopyresampled() expects parameter 2 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 203

Warning: imagejpeg() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 219

Warning: imagedestroy() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 248
Inserçao de imagem com sucesso

Em web este:

../img/portfolio/../img/portfolio/13057997024dd4ec1659d55.jpg../img/portfolio/new13057997024dd4ec1659d55.jpgUpload do ficheiro com sucesso
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 10240 bytes) in /home/pg26631/public_html/includes/resize-class.php on line 78

Share this post


Link to post
Share on other sites
mAiN_iNfEcTiOn

Bem... faz o seguinte:

Antes desta linha:

list($largura,$altura, , ) = getimagesize($ficheiro);

Faz:

var_dump($ficheiro);

Abraço

Share this post


Link to post
Share on other sites
fantasma

Output do erro com o var_dump


../img/portfolio/../img/portfolio/13058029534dd4f8c91328c.jpg../img/portfolio/new13058029534dd4f8c91328c.jpgOcorreu um erro. Ficheiro não carregado.string(44) "../img/portfolio/13058029534dd4f8c91328c.jpg" 
Warning: getimagesize(../img/portfolio/13058029534dd4f8c91328c.jpg) [function.getimagesize]: failed to open stream: No such file or directory in C:\wamp\www\ArtZende\upload\upload.php on line 168

Warning: imagesx() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 34

Warning: imagesy() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 35

Warning: imagesx() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 34

Warning: imagesy() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 35

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in C:\wamp\www\ArtZende\includes\resize-class.php on line 78

Warning: imagecopyresampled() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 79

Warning: Division by zero in C:\wamp\www\ArtZende\includes\resize-class.php on line 184

Warning: Division by zero in C:\wamp\www\ArtZende\includes\resize-class.php on line 185

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in C:\wamp\www\ArtZende\includes\resize-class.php on line 78

Warning: imagecopyresampled() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 79

Warning: imagecopyresampled() expects parameter 2 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 203

Warning: imagejpeg() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 219

Warning: imagedestroy() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 248
Inserçao de imagem com sucesso

Nota: O erro acontece se eu fizer upload noutras áreas e não somente no portfolio

Abraço e obrigado pela paciência!  😳

Share this post


Link to post
Share on other sites
mAiN_iNfEcTiOn

Pronto, o var_dump que te indiquei para colocares anteriormente, retira...

E agora,  antes da linha:

if(move_uploaded_file($_FILES['image']['tmp_name'],$upload_dir . $filename))

Faz:

echo "<br/><br/>";
var_dump($_FILES['image']['tmp_name']);
echo "<br/><br/>";
var_dump($upload_dir . $filename);
echo "<br/><br/>";
var_dump(is_uploaded_file($_FILES['image']['tmp_name']));
echo "<br/><br/>";

e diz o resultado :)

Abraço

Share this post


Link to post
Share on other sites
fantasma

LOL, confesso que ao bocado não me lembrei de por um br para facilitar

Aqui vai

../img/portfolio/../img/portfolio/13058062564dd505b030108.jpg../img/portfolio/new13058062564dd505b030108.jpg

string(0) "" 

string(44) "../img/portfolio/13058062564dd505b030108.jpg" 

bool(false) 

Ocorreu um erro. Ficheiro não carregado.
Warning: getimagesize(../img/portfolio/13058062564dd505b030108.jpg) [function.getimagesize]: failed to open stream: No such file or directory in C:\wamp\www\ArtZende\upload\upload.php on line 175

Warning: imagesx() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 34

Warning: imagesy() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 35

Warning: imagesx() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 34

Warning: imagesy() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 35

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in C:\wamp\www\ArtZende\includes\resize-class.php on line 78

Warning: imagecopyresampled() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 79

Warning: Division by zero in C:\wamp\www\ArtZende\includes\resize-class.php on line 184

Warning: Division by zero in C:\wamp\www\ArtZende\includes\resize-class.php on line 185

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in C:\wamp\www\ArtZende\includes\resize-class.php on line 78

Warning: imagecopyresampled() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 79

Warning: imagecopyresampled() expects parameter 2 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 203

Warning: imagejpeg() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 219

Warning: imagedestroy() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 248
Inserçao de imagem com sucesso

Share this post


Link to post
Share on other sites
mAiN_iNfEcTiOn

Hmmm... segundo os var_dumps, o ficheiro 'uploadado' não é efectivamente uploadado.

Deixa estar esses var_dumps.

Depois desta linha:

$tamanho_max = 1024*3072; // APROX 3MB

Coloca:

ini_set('upload_max_filesize','3M'); # Passar o limite de upload para 3Mb.

Testa e diz-me o que aparece :)

Share this post


Link to post
Share on other sites
fantasma

Não alterou o erro...

../img/portfolio/../img/portfolio/13058120364dd51c4400303.jpg../img/portfolio/new13058120364dd51c4400303.jpg

string(0) "" 

string(44) "../img/portfolio/13058120364dd51c4400303.jpg" 

bool(false) 

Ocorreu um erro. Ficheiro não carregado.
Warning: getimagesize(../img/portfolio/13058120364dd51c4400303.jpg) [function.getimagesize]: failed to open stream: No such file or directory in C:\wamp\www\ArtZende\upload\upload.php on line 177

Warning: imagesx() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 34

Warning: imagesy() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 35

Warning: imagesx() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 34

Warning: imagesy() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 35

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in C:\wamp\www\ArtZende\includes\resize-class.php on line 78

Warning: imagecopyresampled() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 79

Warning: Division by zero in C:\wamp\www\ArtZende\includes\resize-class.php on line 184

Warning: Division by zero in C:\wamp\www\ArtZende\includes\resize-class.php on line 185

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in C:\wamp\www\ArtZende\includes\resize-class.php on line 78

Warning: imagecopyresampled() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 79

Warning: imagecopyresampled() expects parameter 2 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 203

Warning: imagejpeg() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 219

Warning: imagedestroy() expects parameter 1 to be resource, boolean given in C:\wamp\www\ArtZende\includes\resize-class.php on line 248
Inserçao de imagem com sucesso

Share this post


Link to post
Share on other sites
mAiN_iNfEcTiOn

Mostra-me o código html do formulário de onde estás a enviar esse ficheiro que está a dar erro.

(E podes tirar os var_dumps)

Share this post


Link to post
Share on other sites
fantasma

		<form name="upload_imagem_mod" method="post" enctype="multipart/form-data"  action="../upload/upload.php?mod=portfolio">
					<textarea class="descr_galeria" name="descr_galeria"></textarea>
					<input type="file" name="image">
					<input type="hidden" id="id_menu" name="id_menu" value="'.$_GET['id_menu'].'"></input>
					<input type="hidden" id="id_galeria" name="id_galeria" value="'.$id.'"></input>



					<input name="submit_img_mod" type="submit" value="Upload">
					</form>

EDIT: O formulário anterior não era o correcto. Postei o correcto...

Share this post


Link to post
Share on other sites
mAiN_iNfEcTiOn

Para já (e isto não é correcção nenhuma do problema que tens, mas visualmente para já é melhor colocar assim) aconselho-te a fazer as seguintes alterações:

Onde tens:

if(move_uploaded_file($_FILES['image']['tmp_name'],$upload_dir . $filename))

Altera para:

if( is_uploaded_file($_FILES['image']['tmp_name']) && move_uploaded_file($_FILES['image']['tmp_name'],$upload_dir . $filename) )

E no else desse if() onde tens:

echo 'Ocorreu um erro. Ficheiro não carregado.';

deve ser:

die( 'Ocorreu um erro. Ficheiro não carregado.' ); # Não adianta avançar daqui se deu erro -.-'

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

Porque o problema que tens é falha no upload... Dá-me as descrições do ficheiro:

Nome do Ficheiro

Tamanho:

Dimensões (comprimento e altura):

E por fim, o teu espaço em disco, verifica se tens espaço em disco suficiente para testar isso :)

Share this post


Link to post
Share on other sites
fantasma

Nome do fich: P1010162.JPG (assim com maiusculas)

Tamanho: 2,37MB

Dimensões: 2560x1920

Share this post


Link to post
Share on other sites
mAiN_iNfEcTiOn

Ok, por agora queria que fizesses o seguinte:

Fosses ao teu php.ini e procurasses pelas seguintes variáveis:

  • upload_max_filesize
  • post_max_size
  • memory_limit

E coloca manualmente os seguintes valores:

  • upload_max_filesize - 3M
  • post_max_size - 8M
  • memory_limit - 128M

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.