Avatar billede Chak Nybegynder
16. oktober 2010 - 18:01 Der er 5 kommentarer

Hvad er fejlen i dette upload script

Hej eksperter.

Jeg fandt dette upload script her på eksperten, men det vil ikke resize i bredden så thumb billede kommer til at være 180x130.

<?php

    session_start();
$mysql['host'] = 'localhost'; // Host til database
$mysql['username'] = 'root'; // Brugernavn til database
$mysql['password'] = 'test'; // Kodeord til database
$mysql['database'] = 'bkv'; // Database
mysql_connect($mysql['host'],$mysql['username'],$mysql['password']);
mysql_select_db($mysql['database']);

    //SETTINGS
    $uploadDir        = 'upload/'; //Bibliotek, hvor filer uploades til - husk chmod 777
    $allowedFileTypes = array('jpg','gif','png'); //Hvilke filer vil vi acceptere bliver uploadet?
    //THUMBS SETTINGS
    $thumbDir        = 'thumbs/'; //Bibliotek, hvor thumbs gemmes - husk chmod 777
    $thumbPrefix      = 'thumb_';  //Hvad skal tilføjes til originalt filnavn?
    $uploadRand      =  rand(600,100000);
    $thumbHeight      = 130;      //Thumb højde
    $thumbWidth      = 180;      //Thumb bredde
    $thumbQuality    = 100;        //Kvalitet af thumb, kan være fra 0 - dårligt til 100 - bedst

    //Funktioner som bruges:
    function getExtension($filename){
        return strtolower( pathinfo( $filename, PATHINFO_EXTENSION ) );
    }

    function resize( $filename, $newfilename, $maxw, $maxh, $quality=100 )
    {
      $extension = getExtension($filename);
      switch($extension)
      {
        case 'jpeg':
        case 'jpe':
        case 'jpg':
          $srcim = imagecreatefromjpeg( $filename );
          break;
        case 'gif':
          $srcim = imagecreatefromgif( $filename );
          break;
        case 'png':
          $srcim = imagecreatefrompng( $filename );
          break;
        default:
          return false;
      }
      $ow = imagesx( $srcim );
      $oh = imagesy( $srcim );
      $wscale = $maxw / $ow;
      $hscale = $maxh / $oh;
      $scale = min( $hscale, $wscale );
      $nw = round( $ow * $scale, 0 );
      $nh = round( $oh * $scale, 0 );
      $dstim = imagecreatetruecolor( $nw, $nh );
      imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
      switch($extension)
      {
        case 'jpeg':
        case 'jpe':
        case 'jpg':
          imagejpeg( $dstim, $newfilename, $quality );
          break;
        case 'gif':
          imagegif( $dstim, $newfilename );
          break;
        case 'png':
          $png_q = floor( abs( $quality / 10 - 9.9 ) );
          imagepng( $dstim, $newfilename, $png_q );
          break;
        default:
          return false;
      }
      imagedestroy( $dstim );
      imagedestroy( $srcim );
      return file_exists($newfilename);
    }

    //Er der trykket på Upload file knappen?
    if(isset($_POST['myUpload']))
    {
      //Har vi en fil?
      if(is_uploaded_file($_FILES['myFile']['tmp_name']))
      {
        //Filendelse
        $extension = getExtension($_FILES['myFile']['name']);

        //Er filen en af de filer vi gerne vil have?
        if(in_array($extension,$allowedFileTypes))
        {
          //Vi flytter filen fra tmp til vores UPLOADDIR
          if(move_uploaded_file($_FILES['myFile']['tmp_name'],$uploadDir . $uploadRand . basename($_FILES['myFile']['name'])))
          {
              if(resize($uploadDir . $uploadRand . basename($_FILES['myFile']['name']), $thumbDir . $thumbPrefix . $uploadRand . basename($_FILES['myFile']['name']), $thumbWidth, $thumbHeight, $thumbQuality)){
                  echo '<h3 class="fbgreenbox">('.$uploadRand.''.basename($_FILES['myFile']['name']).') uploadet og resized</h3>';
                  $img_normal = $uploadRand . basename($_FILES['myFile']['name']);
                  //$sid = $_SESSION['id'];
                  $img_small  = $thumbPrefix . $uploadRand . basename($_FILES['myFile']['name']);
                  //mysql_query("insert_into `users` SET `img` = '".$img_normal."', `img_small` = '".$img_small."' WHERE id = '$sid'")or die(mysql_error());

              }else{
                echo '<h3 class="fberrorbox">Dit billede er uploadet</h3>';
            }
          }
          else
          {
            echo '<h3 class="fberrorbox">Fejl - Ikke muligt at uploade: '.basename($_FILES['myFile']['name']).'</h3>';
          }
        }
        else
        {
          echo '<h3 class="fberrorbox">Forkert filtype, godkendte filtyper: ('.implode(',',$allowedFileTypes).')</h3>';
        }
      }
      else
      {
        echo '<h3 class="fberrorbox">Du har ikke uploadet et billede<h3>';
      }
    }

    //Vores form
    echo '<form action="new_profilepic.php" method="post" enctype="multipart/form-data">';
    echo '<p>Accepterede filtyper: ('.implode(',',$allowedFileTypes).'):</p> <input type="file" name="myFile"><br />';
    echo '<input type="submit" name="myUpload" value="Upload Fil">';
    echo '</form>';

    ?>
Avatar billede majbom Novice
16. oktober 2010 - 20:56 #1
den resizer i højden, eller?
Avatar billede Chak Nybegynder
16. oktober 2010 - 23:18 #2
Jep, det gør den nemlig, men ikke i bredden
Avatar billede majbom Novice
17. oktober 2010 - 08:34 #3
det forstår jeg ikke, jeg har lige prøvet din kode, og den virker fint hos mig...
Avatar billede Chak Nybegynder
17. oktober 2010 - 12:19 #4
mærkeligt :/
Avatar billede webweaver Praktikant
17. oktober 2010 - 21:04 #5
Hvor tjekker du størrelse på dit billede? Direkte i uploadmappen? Eller får du det vist på en hjemmeside et sted? For der er måske noget layout der gør at den resizer billedet der igen. Simpel HTML f. eks, hvis der er sat en width der...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester