Autor Zpráva
unlucky
Profil
edit: vyřešeno. Zapomněl jsem, že atribut width u thumb není :P
ráno moudřejší no

Mám adr strukturu

/root/admin/clanky.php
/root/admin/pages/upload.php
/root/admin/includy/thumb.php

adresář, kam se uloží obrázky a thumbs
/uploads/articles/
/uploads/articles/thumbs/

Situace je taková. V clanky.php je editor pro přidávání článků. Pomocí ajax uploadnu obrázek (upload.php a kód se vloží do textarea).
Chci, aby se mi s uploadem zároveň udělal i thumbnail. Ale toto mi hlásí chybu, že imagecreate selhalo. Zkoušel jsem dát adresy typu ../../adresář/obrázek.jpg a ../adr/obr.jpg atd... ale všechny hlásí stejný error. Přitom se mi vytvořil adresář.

zde je UPLOAD
<?php            
$subfolder ='';      //    neco/
if ($_POST["from"]=="article") {
  define('_ARTICLE_ATTACH_DIR','../../uploads/articles/');
}

if ($_POST["from"]=="gallery") {
  define('_ARTICLE_ATTACH_DIR','../../uploads/gallery/');
}

                                 
session_start();

header('Content-Type: text/plain; charset=utf-8');


$whitelist	  = array('.jpg', '.gif', '.png', '.jpeg');
$allowed_type = array('application/octet-stream');
$upload_errors = array(
        1 => "The uploaded file exceeds the upload_max_filesize directive in php.ini",
        2 => "The uploaded file exceeds the MAX_FILE_SIZE directive",
        3 => "The uploaded file was only partially uploaded",
        4 => "No file was uploaded",
        6 => "Missing a temporary folder"
	);



	if ('' != $_POST['Filename'] && is_array($_FILES['Filedata']))
	{
		$file = $_FILES['Filedata'];
		
		$ext = strtolower(array_pop(explode('.', $file['name'])));
		$ext = '.'. $ext;
		
		if (in_array($ext, $whitelist) && in_array($file['type'], $allowed_type))
		{
			if ($file['error'] == 0)
			{
				if ($file['size'] > 0)
				{
				
				  $nname= strtolower(str_replace(" ","_",$file['name']));
				                        
					$new_name = rand(1, 100) . $nname;
					$uploadFile = _ARTICLE_ATTACH_DIR . $new_name;
					
					$move = @move_uploaded_file($file['tmp_name'], $uploadFile);
					if ($move !== false)
					{
						$img = getimagesize($uploadFile);
						$repaired_path=str_replace("../../","",_ARTICLE_ATTACH_DIR);
						$img_path="../$subfolder$repaired_path";
						$html = '<img src="'. $img_path . $new_name .'" width="'. $img[0] .'" height="'. $img[1] .'"';
						$html .= ' align="left" vspace="" hspace="" border="0" alt="" />';
						
						echo $html;
						      
						  //zde bude thumb
						  thumb(_ARTICLE_ATTACH_DIR.$new_name,_ARTICLE_ATTACH_DIR."thumbs/",$setup['thumb_width'] ) ;   
						      
						      
						exit();
					}
					else
					{
						$error = 'The uploaded file could not be moved.';
						echo $uploadFile;
					}
				}
				else
				{
					$error = 'File is empty. This error could also be caused by uploads being disabled in your php.ini.';
				}
			}
			else
			{
				$error = $upload_errors[$file['error']];
			}
		}
		else
		{
			$error = 'Invalid file type.';
		}
	}
	else
	{
		$error = 'Select a file first.';
	}


if (strlen($error) > 0)
{
	echo '<div class="info_msg_err" id="_error_">'. $error .'</div>';
}
exit();
?>


Zde je thumb

function thumb( $pathToImages, $pathToThumbs, $thumbWidth ){

  if (!is_dir($pathToThumbs))
  {
  mkdir($pathToThumbs);
  } 
  //$aa=split("/", $pathToImages);
  //$poceta=count($aa);
  //$fname  =$aa[$poceta-1];
  $fname=basename($pathToImages);
  
  $type=strtolower(str_replace(".","",substr($pathToImages,-4)));
	if ($type=="jpeg" or $type=="jpg"){
		$img=imagecreatefromjpeg($pathToImages);
	}
	if ($type=="png"){
		$img=imagecreatefrompng($pathToImages);
	}
  if ($type=="gif"){
		$img=imagecreatefromgif($pathToImages);
	}
	
	

      $width = imagesx( $img );
      $height = imagesy( $img );

      // calculate thumbnail size
      $new_width = $thumbWidth;
      $new_height = floor( $height * ( $thumbWidth / $width ) );

      // create a new temporary image
      $tmp_img = imagecreatetruecolor( $new_width, $new_height );

      // copy and resize old image into new image
      imagecopyresized( $tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height );

	  
  $changed_name=str_replace(".","_.",$fname);
  
	$final_name=$pathToThumbs.$changed_name;
	if ($type=="jpeg" or $type=="jpg"){
		imagejpeg( $tmp_img, $final_name);
	}
	if ($type=="png"){
		imagepng( $tmp_img, $final_name);
	}
  if ($type=="gif"){
		imagegif( $tmp_img, $final_name);
	}
	
	$pix[]= $pathToImages;
	$pix[]=$pathToThumbs.$fname;
	return $pix;

}
Anonymní
Profil *
A nemělo by náhodou být
session_start()
na začítku souboru?
Keeehi
Profil
Anonymní:
Nemusí, takto je to taky v pořádku.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0