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-ID: 88467

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

Ausgedruckt am: 08.11.2024 um 11:11 Uhr

masterG
masterG 26.05.2008 um 15:39:20 Uhr
Goto Top
Ich versteh deine Fragen nicht ganz. Das mit der Suche schon aber den Rest nicht!

masterG
(Moderator)
quba
quba 26.05.2008 um 16:05:34 Uhr
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
masterG
masterG 26.05.2008 um 17:24:03 Uhr
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
quba
quba 26.05.2008 um 17:41:52 Uhr
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
Dani
Dani 26.05.2008 um 20:57:17 Uhr
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
quba
quba 26.05.2008 um 21:01:17 Uhr
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
masterG
masterG 27.05.2008 um 13:43:43 Uhr
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