Avatar billede weevil_dk Nybegynder
01. august 2005 - 16:35 Der er 7 kommentarer

Visning af uploadede filer

Halløjsa alle sammen, jeg håbede at der måske var en derude der kunne hjælpe mig: Jeg er ved at lave en hjemmeside hvor jeg har et login i php dertil har jeg en upload funktion hvor jeg kan uploade filer op til 1 mb, der ligger sig i biblioteket /root/uploaded_files. Disse filer er primært billeder af typen *.jpg jeg efterlyser et simpelt stykke php script der kan vise disse billeder og hente dem frem (uanset navnet på filen) som thumbnails i en Standart størrelse f.eks. 300*200 så de kan vises som et fotoalbum, det skal dertil også være muligt at trykke på billedet og se det i det rigtige format! Er det helt umuligt.. Hvis i ikke kan give mig en komplet kode lige til at sætte ind, ja så er alle andre former for hjælp også til stor nytte... På forhånd tak, mvh daniel
Avatar billede jakobdo Ekspert
01. august 2005 - 18:46 #1
Kan ikke huske hvem som har lavet dette script, men det virker:

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;
}

Det kan du så bruge til at lave selve thumb'en.
Og for så at vise billederne efterfølgende, er lidt mere tricky.
Du kan jo lave noget i stil med:

Et billede uploades.
Original gemmes som:
ori_filnavn.jpg
Thumb gemmes som:
thumb_filnavn.jpg

Så er det blot at lave et php-script, som løber mappen igennem.
Noget i stil med:

<?php
$dir = "/root/uploaded_files";

$allowExt = array("jpg" , "jpeg");

// Open a known directory, and proceed to read its contents
if (is_dir($dir))
{
    if ($dh = opendir($dir))
    {
        $fileArray = array();
        while(($file = readdir($dh)) !== false)
        {
            $arr = explode (".", $file);
            $extension = end($arr);
            if(in_array($extension,$allowExt))
                $fileArray[] = $file;
        }
        closedir($dh);
    }
}

if(count($fileArray) > 0)
{
    sort($fileArray);
    foreach($fileArray as $file)
    {
        echo "<a href=\"" . $file . "\">" . $file . "</a><br>\r\n";
    }
}
?>


Når en fil skrives ud eller puttes i array'et.
Så skal vi tjekke om det starter med ori eller thumb.
thumb laves som et billede med link til ori...
Avatar billede weevil_dk Nybegynder
01. august 2005 - 21:15 #2
okay det lyder rigtig godt, takker, desværre er jeg lidt for dum til at bruge det her, selvom jeg godt forstår princippet, men jeg kan simpelthen ikke forstå koden, ved ikke hvor det er jeg skal skrive om osv. Men en flot og fyldigt svar , tak.. Så må jeg jo ta den derfra.. du får dine points :) men du må gerne uddybe
Avatar billede weevil_dk Nybegynder
01. august 2005 - 21:16 #3
hov kan se det ikke er et svar så du får ingen points men en god karma :)
Avatar billede weevil_dk Nybegynder
01. august 2005 - 21:36 #4
mit upload system er ret simpelt og jeg ved ikke hvad jeg skal tilføje for at lave navnet på filen om, :

<?
   
if ($our_file != "") {
   
    copy($our_file, "upload/$our_file_name") or die("Couldn't Upload the file!"); 
   
} else {
   
    die("The file you tried to upload, was to big!");
}

?>
Avatar billede jakobdo Ekspert
01. august 2005 - 21:52 #5
Jeg vil gerne kigge videre på det i morgen.
Prøv at paste alt din upload kode herind.
Så giver jeg det et forsøg.
Avatar billede weevil_dk Nybegynder
01. august 2005 - 22:23 #6
takker men det har jeg allerede gjort, men det bedste ville være hvis du kan lave koden og så kommentere den, :)
Avatar billede jakobdo Ekspert
02. august 2005 - 07:53 #7
Test lige dette:

<?

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 );
    imagejpeg( $dstim, $newfilename, 85 );
    imagedestroy( $dstim );
    imagedestroy( $srcim );
}

if ($our_file != "")
{
    copy($our_file, "upload/original_$our_file_name") or die("Couldn't Upload the file!");
    resize($our_file, "upload/thumb_$our_file_name", 300, 200);
}
else
{
    die("The file you tried to upload, was to big!");
}

?>
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