Marco: Bild-Upload mit PHP

Beitrag lesen

Hi,

habe ein PHP-Skript gefunden, dass es ermöglicht Bilder auf den FTP-Server hochzuladen und direkt anzeigen zu lassen. Dies funktioniert mit dem Bild in richtiger Größe so wie es sein soll, aber das Thumbnail, dass dazu erzeugt und hochgeladen werden soll, funktioniert nicht. Hat jemand eine Idee, was daran falsch ist?

Die richtigen Ordner sind angegeben und die Bildgrößen-Beschränkungen etwas runtergesetzt, ansonsten wurde am Skript nichts geändert.

Gruß, Marco

<html>
<head>
<title>Upload</title>
</head>
<body>
<?
if($action){

// --------------------------------
  // Diverse Variablen
  // --------------------------------

$path = "images/typen/"; // Url zum Speicherordner der großen Bilder
$thumb_path = "images/typen/thumb/"; // Url zum Speicherordner der Vorschaubilder
$config_width = "320"; // Bildbreite max. bei großem Bild
$config_height = "240"; // Bildhöhe max. bei großem Bild
$config_thumb_width = "80"; // Bildbreite max. bei Vorschaubild
$config_thumb_height = "60"; // Bildhöhe max. bei Vorschaubild
$resizequality = "70"; // Bildkompressionsrate 0-100
$deindomain = "http://www.maxrev.de/";  // unsere Domain

if ($HTTP_POST_FILES['userfile']['tmp_name']<> 'none')
  {

// --------------------------------
  // Get File Upload Info
  // --------------------------------

$filename = $HTTP_POST_FILES['pic_file']['name'];
        $filetype = $HTTP_POST_FILES['pic_file']['type'];
        $filetmp = $HTTP_POST_FILES['pic_file']['tmp_name'];

// --------------------------------
  // Check file type
  // --------------------------------

switch ($filetype)
  {
     case 'image/jpeg':
     case 'image/jpg':
     case 'image/pjpeg':

$pic_filetype = '.jpg';
        break;

case 'image/png':
     case 'image/x-png':

$pic_filetype = '.png';
        break;

case 'image/gif':

$pic_filetype = '.gif';
        break;
     default:
        die("Falsches Dateiformat. Nur JPEG, GIF oder PNG erlaubt!");
  }

// --------------------------------
  // Generate filename
  // --------------------------------

srand((double)microtime()*1000000);   // for older than version 4.2.0 of PHP

do
  {
     $pic_filename = md5(uniqid(rand())) . $pic_filetype;
  }
  while( file_exists($path . $pic_filename) );

// --------------------------------
  // Move this file to upload directory
  // --------------------------------

$ini_val = ( @phpversion() >= '4.0.0' ) ? 'ini_get' : 'get_cfg_var';

if ( @$ini_val('open_basedir') != '' )
  {
     if ( @phpversion() < '4.0.3' )
     {
        die("open_basedir is set and your PHP version does not allow move_uploaded_file<br /><br />Please contact your server admin");
     }

$move_file = 'move_uploaded_file';
  }
  else
  {
     $move_file = 'copy';
  }

$move_file($filetmp, $path . $pic_filename);

@chmod($path . $pic_filename, 0777);

// --------------------------------
  // Well, it's an image. Check its image size
  // --------------------------------

$pic_size = getimagesize($path . $pic_filename);

$pic_width = $pic_size[0];
  $pic_height = $pic_size[1];

// --------------------------------
  // This image is okay, we can cache its thumbnail now
  // --------------------------------

if($pic_filetype != '.gif')
  {
     $gd_errored = FALSE;

switch ($pic_filetype)
     {
        case '.jpg':
           $read_function = 'imagecreatefromjpeg';
           break;
        case '.png':
           $read_function = 'imagecreatefrompng';
           break;
     }

$src = @$read_function($path  . $pic_filename);

if (!$src)
     {
        $gd_errored = TRUE;
        $pic_thumbnail = '';
     }
     else if( ($pic_width > $config_thumb_width) or ($pic_height > $config_thumb_height) )
     {
        // Resize it
        if ($pic_width > $pic_height)
        {
           $thumbnail_width = $config_thumb_width;
           $thumbnail_height = $config_thumb_width * ($pic_height/$pic_width);
        }
        else
        {
           $thumbnail_height = $config_thumb_height;
           $thumbnail_width = $config_thumb_height * ($pic_width/$pic_height);
        }

$thumbnail = @imagecreatetruecolor($thumbnail_width, $thumbnail_height);

$resize_function = 'imagecopyresampled';

@$resize_function($thumbnail, $src, 0, 0, 0, 0, $thumbnail_width, $thumbnail_height, $pic_width, $pic_height);
     }
     else
     {
        $thumbnail = $src;
     }

if (!$gd_errored)
     {
        $pic_thumbnail = $pic_filename;

// Write to disk
        switch ($pic_filetype)
        {
           case '.jpg':
              @imagejpeg($thumbnail, $thumb_path . $pic_thumbnail, $resizequality);
              break;
           case '.png':
              @imagepng($thumbnail, $thumb_path . $pic_thumbnail);
              break;
        }

@chmod($thumb_path . $pic_thumbnail, 0777);

} // End IF $gd_errored

} // End Thumbnail Cache

// --------------------------------------
 // OK lets resize the original picture
 // --------------------------------------

if($pic_filetype != '.gif')
 {
   $gd_errored = FALSE;

switch ($pic_filetype)
   {
     case '.jpg':
       $read_function = 'imagecreatefromjpeg';
       break;
     case '.png':
       $read_function = 'imagecreatefrompng';
       break;
   }

$src = @$read_function($path  . $pic_filename);

if (!$src)
   {
     $gd_errored = TRUE;
     $pic_resize = '';
   }
   else if( ($pic_width > $config_width) or ($pic_height > $config_height) )
   {
     // Resize it
     if ( (($pic_width / $pic_height) > ($config_width / $config_height)) )
     {
       $resize_width = $config_width;
       $resize_height = $config_width * ($pic_height/$pic_width);
     }
     else
     {
       $resize_height = $config_height;
       $resize_width = $config_height * ($pic_width/$pic_height);
     }

$resize = @imagecreatetruecolor($resize_width, $resize_height);

$resize_function = 'imagecopyresampled';

@$resize_function($resize, $src, 0, 0, 0, 0, $resize_width, $resize_height, $pic_width, $pic_height);
   }
   else
   {
     $resize = $src;
   }

if (!$gd_errored)
   {
     $pic_resize = $pic_filename;

// Write to disk
     switch ($pic_filetype)
     {
       case '.jpg':
         @imagejpeg($resize, $path . $pic_resize, $resizequality);
         break;
       case '.png':
         @imagepng($resize, $path . $pic_resize);
         break;
     }

@chmod($path . $pic_resize, 0777);

} // End IF $gd_errored

} // End Picture Resize

echo "Datei ist auf dem Server! <br><br>";
     echo "Url des großen Bildes: <a href="$deindomain$path$pic_filename" target="_blank">".$deindomain.$path.$pic_filename;
    echo "</a> <br><img src="$deindomain$path$pic_filename"><br><br>";
     echo "Url des Vorschaubildes: <a href="$deindomain$thumb_path$pic_filename" target="_blank">".$deindomain.$thumb_path.$pic_filename;
    echo "</a> <br><img src="$deindomain$thumb_path$pic_filename">";

}
} else { ?>

<form method="post" enctype="multipart/form-data" action="<?php echo $PHP_SELF ?>">
<input type="hidden" name="MAX_FILE_SIZE" value="4000000">
<br>
<strong>File Upload</strong> <br>
<br>
<input name="pic_file" type="file" size=40>
<br>
<br>
<input type="submit" name="action" value="Speichern">
</form>
<?
}
  // -----------------------------------------
  // Das Script kann unter Verwendung
  // dieses Vermerks uneingeschränkt
  // genutzt / verändert werden.
  //  © www.marc-gutt.de http://www.abakus-internet-marketing.de/outbound.pl?http://www.marc-gutt.de
  // -----------------------------------------
?>
</body>
</html>