Avatar billede hp-power Nybegynder
03. juni 2008 - 23:22 Der er 15 kommentarer og
2 løsninger

upload af en fil med automastisk thumbnail

Jeg har forsøgt på at lave så en bruger kan vælger en fil og upload den, og så der automastisk bliver lavet en thumbnail, men kan ikke få det til at lykkes...

en start side admgalleri_upload.php inderholder

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Upload af nyt billede til forsiden</title>
<link href="../text.css" rel="stylesheet" type="text/css" />
<link href="../layout.css" rel="stylesheet" type="text/css" />

<link href="admin.css" rel="stylesheet" type="text/css" />

</head>

<body>
<div id="admside">

<form method="post" action="fun_galleri_upload_img.php?upload=yes" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="12582912">
<p>Vælg den fil som du ønsker at uploade til mappen Galleriet :<br><br /> </p>
<p>
  <input name="userfile" type="file" class="inputknap">
  <br />
  <br>
  <input type="submit" class="inputknap" value="Upload">
</p>
<p>&nbsp;</p>
</form>



</div>

</body>
</html>


functions filen fun_galleri_upload_img.php indeholder.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Funktion</title>
</head>

<body>
<?
if ($_GET['upload']=="yes")
{

if (!(move_uploaded_file($_FILES['userfile'] ['tmp_name'], "../galleri/pic/" .$_FILES['userfile']['name']))) die ("Cannot upload file");
//---------- Laver thumbnail

function resize( $filename, $newfilename, $maxw, $maxh )
    {
        $srcim = imagecreatefromjpeg( $filename );
        $ow = imagesx( $srcim );
        $oh = imagesy( $srcim );
        $wscale = $maxw / $ow;
        $hscale = $maxh / $oh;
        $scale = ( $hscale < $wscale ? $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 );
        imagejpeg( $dstim, $newfilename, 85 );
        imagedestroy( $dstim );
        imagedestroy( $srcim );
    }

    resize( ../galleri/pic/" .$_FILES['userfile']['name'], ../galleri/pic/" .$_FILES['userfile']."tmb_"['name'], 600, 100 );

//-------------- Slut
echo "$filoploaded";
echo "<br><br><h1><center>";
echo "Filen er uploadet til Galleriet";
echo "</h1></center><br><br>";
@include("status.php");
}
?>




</body>
</html>


kan i hjælpe mig er lige glad om det er et helt anden script bare jeg kan få det til at virke. har lavet mappe egenskaben om til 777
Avatar billede jakobdo Ekspert
04. juni 2008 - 06:35 #1
Brug denne kode til opload: http://www.eksperten.dk/artikler/1098
Og så retter du:

//Vi flytter filen fra tmp til vores UPLOADDIR
      if(move_uploaded_file($_FILES['myFile']['tmp_name'],$uploadDir . basename($_FILES['myFile']['name'])))
      {
        echo '<h3 style="color:green;">File ('.basename($_FILES['myFile']['name']).') uploaded succesfully</h3>';
      }

til:

//Vi flytter filen fra tmp til vores UPLOADDIR
      Resize kan hentes her http://www.eksperten.dk/artikler/1130 , men det ser ud til du allerede har den
     
      if(move_uploaded_file($_FILES['myFile']['tmp_name'],$uploadDir . basename($_FILES['myFile']['name'])))
      {
          if(resize($uploadDir . basename($_FILES['myFile']['name']),$uploadDir . 'thumb_' . basename($_FILES['myFile']['name']), 300,300)){
              echo '<h3 style="color:green;">File ('.basename($_FILES['myFile']['name']).') uploaded and resized succesfully</h3>';
          }else{
              echo '<h3 style="color:red;">File ('.basename($_FILES['myFile']['name']).') uploaded succesfully, but resize failed</h3>';
          }
      }
Avatar billede hp-power Nybegynder
12. juni 2008 - 20:50 #2
jeg er kommet hjem fra ferie og har prøvet det set er virke men efter jeg har indsat resize delen får jeg fejl i denne linje

    resize( $uploaddir .$_FILES['userfile']['name'], $uploaddir .$_FILES['userfile'] . tmb_['name'], 600, 100 );

fejl kode:

Parse error: syntax error, unexpected '[' in /customers/hostbox.dk/hostbox.dk/httpd.www/test/upload.php on line 49

hele filen ser sådan ud.

<body>
<?php
$uploadDir = '../galleri/pic/'; //Bibliotek hvor filer uploades til - husk chmod 777
$allowedFileTypes = array('jpg','gif','png'); //Hvilke filer vil vi acceptere bliver uploadet?

//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 = strtolower(pathinfo($_FILES['myFile']['name'],PATHINFO_EXTENSION));
   
    //Er filen en af de filer vi gerne vil have?
    if(in_array($extension,$allowedFileTypes))
    {
      //Vi flytter filen fra tmp til vores UPLOADDIR
   
   
    // Resize kan hentes her http://www.eksperten.dk/artikler/1130 , men det ser ud til du allerede har den
     
//---------- Laver thumbnail

function resize( $filename, $newfilename, $maxw, $maxh )
    {
        $srcim = imagecreatefromjpeg( $filename );
        $ow = imagesx( $srcim );
        $oh = imagesy( $srcim );
        $wscale = $maxw / $ow;
        $hscale = $maxh / $oh;
        $scale = ( $hscale < $wscale ? $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 );
        imagejpeg( $dstim, $newfilename, 85 );
        imagedestroy( $dstim );
        imagedestroy( $srcim );
    }

    resize( $uploaddir .$_FILES['userfile']['name'], $uploaddir .$_FILES['userfile'] . tmb_['name'], 600, 100 );

//-------------- Slut
      //fakdsfjækasdjfælkadsjfælkadsjfælkadsjfælkadjsfklæ
     
      if(move_uploaded_file($_FILES['myFile']['tmp_name'],$uploadDir . basename($_FILES['myFile']['name'])))
      {
          if(resize($uploadDir . basename($_FILES['myFile']['name']),$uploadDir . 'thumb_' . basename($_FILES['myFile']['name']), 300,300)){
              echo '<h3 style="color:green;">File ('.basename($_FILES['myFile']['name']).') uploaded and resized succesfully</h3>';
          }else{
              echo '<h3 style="color:red;">File ('.basename($_FILES['myFile']['name']).') uploaded succesfully, but resize failed</h3>';
          }
      }

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

?>


håber en kan hjælpe
Avatar billede jakobdo Ekspert
12. juni 2008 - 20:58 #3
Hvad så med denne: http://www.eksperten.dk/artikler/1200
Der er alt samlet i en...
Avatar billede hp-power Nybegynder
12. juni 2008 - 21:22 #4
kan det lade sig gøre så den laver thumben i en bedre kvalitet

dette er i kvalitet 100:

http://hostbox.dk/galleri/pic/thumb_d1.JPG

Man kan jo ikke se hvad det er
Avatar billede hp-power Nybegynder
12. juni 2008 - 21:30 #5
Avatar billede jakobdo Ekspert
12. juni 2008 - 21:34 #6
Er det min artikel du har brugt til at lave det ?
Avatar billede hp-power Nybegynder
12. juni 2008 - 21:43 #7
ja det er det.. med kvalitet til 100
Avatar billede jakobdo Ekspert
12. juni 2008 - 21:47 #8
Har du et link til det billede du forsøger at uploade?
Hvad størrelse forsøger du at resize til?
Avatar billede hp-power Nybegynder
12. juni 2008 - 21:55 #9
http://hostbox.dk/galleri/pic/d4.jpg orginal billedet

koden:


<?php
//SETTINGS
$uploadDir        = '../galleri/pic/'; //Bibliotek, hvor filer uploades til - husk chmod 777
$allowedFileTypes = array('jpg','gif','png'); //Hvilke filer vil vi acceptere bliver uploadet?
//THUMBS SETTINGS
$thumbDir        = '../galleri/pic/'; //Bibliotek, hvor thumbs gemmes - husk chmod 777
$thumbPrefix      = 'thumb_';  //Hvad skal tilføjes til originalt filnavn?
$thumbHeight      = 200;      //Thumb højde
$thumbWidth      = 300;      //Thumb bredde
$thumbKvalitet    = 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 . basename($_FILES['myFile']['name'])))
      {
          if(resize($uploadDir . basename($_FILES['myFile']['name']), $thumbDir . $thumbPrefix . basename($_FILES['myFile']['name']), $thumbWidth, $thumbHeight, $thumbQuality)){
              echo '<h3 style="color:green;">File ('.basename($_FILES['myFile']['name']).') uploaded and resized succesfully</h3>';
          }else{
            echo '<h3 style="color:red;">File ('.basename($_FILES['myFile']['name']).') uploaded succesfully, but resize failed</h3>';
        }
      }
      else
      {
        echo '<h3 style="color:red;">Error - unable to upload file: '.basename($_FILES['myFile']['name']).'</h3>';
      }
    }
    else
    {
      echo '<h3 style="color:red;">Wrong filetype, allowed filetypes are: ('.implode(',',$allowedFileTypes).')</h3>';
    }
  }
  else
  {
    echo '<h3 style="color:red;">No file selected<h3>';
  }
}

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

?>
Avatar billede jakobdo Ekspert
12. juni 2008 - 22:22 #10
Min kode laver dette billede: http://www.codebreaker.dk/exp/833763exp.php

Og det er denne kode jeg benytter:

<?php
//http://www.eksperten.dk/spm/833763

function resize($filename, $maxw, $maxh, $quality=100 )
{
    $srcim = imagecreatefromjpeg( $filename );
  $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 );
  header('Content-Type: image/jpeg');
  imagejpeg($dstim);
  imagedestroy( $dstim );
}

resize('http://hostbox.dk/galleri/pic/d4.jpg',300,200);

?>
Avatar billede hp-power Nybegynder
12. juni 2008 - 22:22 #11
Har fundet fejler en i scriptet  du har kaldet det:$thumbKvalitet starten og thumbQuality til sidst..

men hvis du svare så for du points. kunne ikke have lavet det uden dig.. takker
Avatar billede jakobdo Ekspert
12. juni 2008 - 22:23 #12
Hov, jeg tror sgu jeg kan se fejlen:

$thumbKvalitet    = 100;

Men funktionen kaldes med: $thumbQuality
ret lige...

Og jeg retter min artikel.
Avatar billede jakobdo Ekspert
12. juni 2008 - 22:28 #13
Hehe, vi var enige! :o)

Du får et svar.
Avatar billede hp-power Nybegynder
12. juni 2008 - 22:29 #14
det er bare i orden. nu skal jeg bare have lavet så den bliver lagt ind i sql osv.
Avatar billede jakobdo Ekspert
12. juni 2008 - 22:36 #15
Takker for point.
Avatar billede hp-power Nybegynder
12. juni 2008 - 22:54 #16
kan du hjælpe lidt mere.. hvordan får jeg filnavnet fx. d4.jpg over i en $filnavnet
Avatar billede jakobdo Ekspert
13. juni 2008 - 06:34 #17
Den forstod jeg ikke ?

basename($filename) burde måske gøre det ?
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