superbios
Goto Top

Bilder Upload, mit nummer als dateiname

Moin face-smile

Also ich suche ein ganz normales bider upload script (muss jetzt net so toll wie z.b. imageshrink etc,)
Aber es muss
- Den link zum bild anzeigen
- Dem bild einen automatisch generierten datei namen geben.

Folgendes script habe ich:

<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...........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; 
   $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 
   // ----------------------------------------- 
?> 
</body> 
</html>
Das wäre genau soetwas.
Aber : es ist für das "alte" PHP.
Für das "neue" gibt es auch welche, aber die generieren net automatisch den datei namen, sondern lassen es unverändert face-sad


LG

Content-Key: 146837

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

Printed on: April 18, 2024 at 01:04 o'clock

Member: Enclave
Enclave Jul 26, 2010 at 16:12:13 (UTC)
Goto Top
Namen generieren ist nicht schwer. Nur muss man schon wissen was man möchte:

- durchnummeriert (1.jpg, 2.jpg, etc.)
- hash (a3cca2b2aa1e3b5b3b5aad99a8529074.jpg, etc.)
- uvm.

Sollten es viele, viele Bilder werden ist auf jeden Fall dazu angeraten die Bilder zu verteilen (dafür nehme ich gerne Hashwerte auseinander).

Ohne nachgesehen zu haben wird es aber bestimmt auch massig vernünftige Image-Hosting-Skripte geben die weitaus mehr können als du haben möchtest...


Mfg

Enclave