quba
Goto Top

Bilder Upload Script

Hallo zusammen,

da ich PHP mäßig kein Profi bin habe ich eine kleine Frage zu einem Bilder Upload Script.
Habe dieses hier im Netz gefunden und bekomme einige anpassungen nicht hin.
Vielleicht kann jemand helfen.
Hier erstmal das Script:
<? 
if($action){ 

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

$path = "uploads/"; // Url zum Speicherordner der gro?en Bilder   
$thumb_path = "uploads/thumb/"; // Url zum Speicherordner der Vorschaubilder   
$config_width = "320"; // Bildbreite max. bei gro?em Bild   
$config_height = "240"; // Bildhohe max. bei gro?em Bild   
$config_thumb_width = "130"; // Bildbreite max. bei Vorschaubild   
$config_thumb_height = "60"; // Bildhohe max. bei Vorschaubild   
$resizequality = "90"; // Bildkompressionsrate 0-100   
$deindomain = "http://www.domain.info/";  // unsere Domain   

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

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

         $filename = $_FILES['pic_file']['name'];   
         $filetype = $_FILES['pic_file']['type'];   
         $filetmp = $_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; 
   $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="40000000">   
<br> 
<strong>File Upload</strong> <br> 
<br> 
<input name="pic_file" type="file" size=50>   
<br> 
<br> 
<input type="submit" name="action" value="Speichern">   
</form> 
<? 
 } 
   // ----------------------------------------- 
   // Das Script kann unter Verwendung 
   // dieses Vermerks uneingeschrankt 
   // genutzt / verandert werden. 
   //  © www.marc-gutt.de 
   // ----------------------------------------- 
?> 
Meine Frage nun:
1. soll der Dateiname des Bildes bestehen bleiben
2. wenn ein Bild mit gleichem Dateinamen hochgeladen wird, soll das vorhandene nicht gelöscht werden, sondern "hochgezählt" werden. Bsp.: Thema_A.jpg Thema_A(1).jpg Thema_A(2).jpg
3. Soll auf der Upload-Seite eine Übersicht über die hochgeladenen Bilder gegeben werden die bspw. dem Suchkriterium Thema_A entsprechen; über diesen Überblick kann auch ein Bild gelöscht werden.

Ich weiß, es ist ein wenig viel auf einmal,
aber falls jmd. mir helfen kann wäre ich sehr dankbar.

Vielen Dank!

Grüße
quba

[EDIT masterG 26.05.2008 15:37]:
Ich habe mir erlaubt den Code in einen Codeblock zu packen!

Content-Key: 88467

Url: https://administrator.de/contentid/88467

Printed on: May 8, 2024 at 23:05 o'clock

Member: masterG
masterG May 26, 2008 at 13:39:20 (UTC)
Goto Top
Ich versteh deine Fragen nicht ganz. Das mit der Suche schon aber den Rest nicht!

masterG
(Moderator)
Member: quba
quba May 26, 2008 at 14:05:34 (UTC)
Goto Top
zu 1. Beim hochladen wird die Datei mit einem hashwert gespeichert, es soll aber der Dateiname bestehen bleiben.

zu 2. Bei einem gleichen Dateinamen soll die vorhandene Datei NICHT überschrieben werden, sondern es soll fortlaufend "hochgezählt" werden Bsp: wenn Bild.jpg vorhanden ist,
soll der Dateiname auf Bild(1).jpg gesetzt werden usw.

hoffe die Fragen korrekt gestellt zu haben.

Gruß
quba
Member: masterG
masterG May 26, 2008 at 15:24:03 (UTC)
Goto Top
1)Zeile 62. Dort musst du es nur entsprechend ändern das der Name behalten werden soll.
2)Muss ich mir das Script genauer anschauen!

masterG
Member: quba
quba May 26, 2008 at 15:41:52 (UTC)
Goto Top
1) Ahhh Danke, ich muss wohl den Wald vor lauter Bäumen nicht gesehen haben.

2) und 3) Schonmal im voraus vielen Dank für die Hilfe.

quba
Member: Dani
Dani May 26, 2008 at 18:57:17 (UTC)
Goto Top
Abend,
ich will mal dazwischen funkten. ^^
es ist theoretisch nicht möglich, dass es 2 Bilder gibt die den gleichen MD5 Hashwert im Dateinamen hat. Darum macht man sowas....
Also 1 und 2 ist ein Wiederspruch in sich.

Achja...nettes Script, aber dir fehlt eindeutig der Durchblick. Ich würde es mal mit was einfachen probieren.


Gruß
Dani
Member: quba
quba May 26, 2008 at 19:01:17 (UTC)
Goto Top
Nabend,

1 und 2 sind eigtl kein widerspruch.
Der "Stammname" ist ja dann immer gleich Name.jpg, Name(1).jpg usw. somit sind die Bilder dann einzeln wieder einfacher einander zuzuordnen welche Bilder zu welchen Themen gehören
Member: masterG
masterG May 27, 2008 at 11:43:43 (UTC)
Goto Top
Damit der Rest das auch weiß! Ich habe mit quba über PN noch geredet und ich habe ihm ein netters uploadscript gegeben:
http://www.php-space.info/bilder-upload-script/ .

Hier mit ist der Thread gelöst und geschlossen!

masterG