Avatar billede dj-hupi Nybegynder
12. februar 2007 - 15:20 Der er 10 kommentarer og
1 løsning

Upload, thumbnail og stier i mysql

Hejsa alle sammen.

Er der nogen som kan anbefalde et script som kan følgende:
Uploade orginal billede i en mappe
Kopier orginal billede og lave en thumbnail til anden mappe
og smide data'erne i en mysql ?

Jeg gir gerne 200 point hvis en allerede har lavet et eller gerne vil lave et.

Jeg kan evt. selv for den til at smide data'erne i mysql.

Rasmus
Avatar billede jakobdo Ekspert
12. februar 2007 - 17:33 #1
Skal du bruge hele koden?
Eller har du noget at starte på selv?
Avatar billede dj-hupi Nybegynder
12. februar 2007 - 17:51 #2
Altså det der er det væreste er faktisk at lave thumbnailen

Jeg har brugt denne en del gange:
<?php
$maxSize = 512000; //512 kb
$allowPics = array("jpg", "jpeg");
                           
$uploadDir = "/upload/";
$better_token = md5(uniqid(rand(), true));
                           
if($_FILES['thumb']['size'] > 0 && $_FILES['fullsize']['size'])
{
$thumbfile = getcwd() . $uploadDir . $_FILES['thumb']['name'];
$fullfile  = getcwd() . $uploadDir . $_FILES['fullsize']['name'];
                               
                                if($_FILES['thumb']['size'] > $maxSize && $_FILES['fullsize']['size'] > $maxSize)
{
echo "Pics above 512KB not allowed!";
echo "<br>";
echo "<a href='upload.php'>Try again</a>";
exit();
                                   
}
           
if (file_exists($thumbfile) && file_exists($fullfile)) {
echo "The file $filename exists";
echo "<br>";
echo "<a href='upload.php'>Try again</a>";
exit();
} else {
echo "The file $filename does not exist";
}
                                 
$extThumb = strtoupper(end(explode(".",$_FILES['thumb']['name'])));
$extFull  = strtoupper(end(explode(".",$_FILES['fullsize']['name'])));
                           
                                  move_uploaded_file($_FILES['thumb']['tmp_name'],$thumbfile);
                                move_uploaded_file($_FILES['fullsize']['tmp_name'],$fullfile);
                               
$picture_desc = $_REQUEST['desc'];
                               
$query = mysql_query("INSERT INTO pictures(species_id,picture_path,picture_thumb,picture_sex) VALUES('$id','".basename($fullfile)."','".basename($thumbfile)."','$sex')");
                               
echo "$fullfile now uploaded...";
echo "<br>";
echo "$thumbfile now uploaded...";
}
?>
Avatar billede jakobdo Ekspert
12. februar 2007 - 17:58 #3
Til resize kan du bruge denne funktion:

function resize( $srcim, $maxw, $maxh )
{
    $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 );
    imagedestroy( $srcim );
    return $dstim;
}
Avatar billede dj-hupi Nybegynder
12. februar 2007 - 20:14 #4
Hvordan ville du bruge det ind i koden?
Avatar billede jakobdo Ekspert
12. februar 2007 - 20:26 #5
F.eks. i stedet for denne linie:
move_uploaded_file($_FILES['thumb']['tmp_name'],$thumbfile);
Avatar billede dj-hupi Nybegynder
19. februar 2007 - 15:46 #6
Okey den skal jeg ha lidt hjælp til...
Kan du prøve at lave det?
Avatar billede jakobdo Ekspert
19. februar 2007 - 17:52 #7
Prøv følgende kode:

<?php

function resize( $filename, $newfilename, $maxw, $maxh )
{
    $result = false;
    $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 );
    $result = imagejpeg( $dstim, $newfilename, 85 );
    imagedestroy( $dstim );
    imagedestroy( $srcim );
    return $result;
}

$maxSize = 512000; //512 kb
$allowPics = array("jpg", "jpeg");
$thumbWidth = 100;
$thumbHeight = 100;
                         
$uploadDir = "/upload/";
$better_token = md5(uniqid(rand(), true));
                         
if($_FILES['thumb']['size'] > 0 && $_FILES['fullsize']['size'])
{
    $thumbfile = getcwd() . $uploadDir . $_FILES['thumb']['name'];
    $fullfile  = getcwd() . $uploadDir . $_FILES['fullsize']['name'];
                             
    if($_FILES['thumb']['size'] > $maxSize && $_FILES['fullsize']['size'] > $maxSize)
    {
        echo "Pics above 512KB not allowed!";
        echo "<br>";
        echo "<a href='upload.php'>Try again</a>";
        exit();                             
    }
         
    if (file_exists($thumbfile) && file_exists($fullfile))
    {
        echo "The file $filename exists";
        echo "<br>";
        echo "<a href='upload.php'>Try again</a>";
        exit();
    }
    else
    {
        echo "The file $filename does not exist";
    }
                               
    $extThumb = strtoupper(end(explode(".",$_FILES['thumb']['name'])));
    $extFull  = strtoupper(end(explode(".",$_FILES['fullsize']['name'])));
                         
    resize($_FILES['thumb']['tmp_name'],$thumbfile,$thumbWidth,$thumbHeight);
  move_uploaded_file($_FILES['fullsize']['tmp_name'],$fullfile);
                             
    $picture_desc = $_REQUEST['desc'];
                             
    $query = mysql_query("INSERT INTO pictures(species_id,picture_path,picture_thumb,picture_sex) VALUES('$id','".basename($fullfile)."','".basename($thumbfile)."','$sex')");
                             
    echo "$fullfile now uploaded...";
    echo "<br>";
    echo "$thumbfile now uploaded...";
}
?>
Avatar billede dj-hupi Nybegynder
19. februar 2007 - 20:02 #8
Tror jeg har formuleret mig forkert!

Jeg vil gerne have at den kun uploader 1 billede men laver en kopi som den kaldes _thb_billedefil ogsom er resized.
Plus at den uploader orginalfilen.

Har lavet lidt tilretning:
<?php

function resize( $filename, $newfilename, $maxw, $maxh )
{
    $result = false;
    $filename = ("_thb_" && $filename);
    $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 );
    $result = imagejpeg( $dstim, $newfilename, 85 );
    imagedestroy( $dstim );
    imagedestroy( $srcim );
    return $result;
}

$maxSize = 512000; //512 kb
$allowPics = array("jpg", "jpeg");
$thumbWidth = 100;
$thumbHeight = 100;
                       
$uploadDir = "/billeder/";
$better_token = md5(uniqid(rand(), true));
                       
if($_FILES['fullsize']['size'] > 0)
{
      $fullfile  = getcwd() . $uploadDir . $_FILES['fullsize']['name'];
                           
    if($_FILES['fullsize']['size'] > $maxSize)
    {
        echo "Pics above 512KB not allowed!";
        echo "<br>";
        echo "<a href='upload.php'>Try again</a>";
        exit();                           
    }
       
    if(file_exists($fullfile))
    {
        echo "The file $filename exists";
        echo "<br>";
        echo "<a href='upload.php'>Try again</a>";
        exit();
    }
    else
    {
        echo "The file $filename does not exist";
    }
                             
    $extFull = strtoupper(end(explode(".",$_FILES['fullsize']['name'])));
                       
    resize($_FILES['fullsize']['tmp_name'],$thumbfile,$thumbWidth,$thumbHeight);
      move_uploaded_file($_FILES['fullsize']['tmp_name'],$fullfile);
                           
    $query = mysql_query("INSERT INTO pictures(species_id,picture_path,picture_thumb,picture_sex) VALUES('$id','".basename($fullfile)."','".basename($thumbfile)."','$sex')");

}
?>
            <form enctype="multipart/form-data" action="<?=$_SERVER['PHP_SELF'];?>" method="POST">
                <table>
                    <tr><td>FullSize file:</td><td><input name="fullsize" type="file" /></td></tr>
        <tr><td colspan="2"><input type="submit" value="Send File" name="upload"/></td></tr>
        </table>
                </form>

Men det virker ihvertfald ikke ...
Avatar billede jakobdo Ekspert
19. februar 2007 - 20:43 #9
Virker koden slet ikke?
Eller er det kun noget af det som ikke virker?
Avatar billede dj-hupi Nybegynder
19. februar 2007 - 20:57 #10
Altså min kode?

Min kode uploader "move_uploaded_file($_FILES['fullsize']['tmp_name'],$fullfile);"
Men den resize'er ikke og uploader det.
Avatar billede dj-hupi Nybegynder
26. februar 2007 - 22:12 #11
Lukker 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