Avatar billede sthen Nybegynder
06. december 2008 - 15:07 Der er 5 kommentarer og
1 løsning

Problemer med billedupload

Har hentet dette script under "Artikler":

<?php
//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 = './upload/thumbs/'; //Bibliotek, hvor thumbs gemmes - husk chmod 777
$thumbPrefix = 'thumb_'; //Hvad skal tilføjes til originalt filnavn?
$thumbHeight = 150; //Thumb højde
$thumbWidth = 200; //Thumb bredde
$thumbQuality = 85; //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=85 )
{
$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="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>';

?>

Jeg får fint uploadet billeder i mappen "upload", men når thumbnailen skal gemmes, går der ged i et eller andet, jeg kan bare ikke se hvorfor.
1) Jeg får ikke nogen thumbnail i mappen thumbs, der ligger som en undermappe til "upload".
2) Jeg HAR chmod'et alle mapper.
3) Fejlmelding på skærmen "Siden kan ikke vises"

Hvad sørensen sker der??
Avatar billede jakobdo Ekspert
06. december 2008 - 19:55 #1
Prøv at udskriv følgende variabler inden du kalder resize():

echo 'Billede navn: ' . $uploadDir . basename($_FILES['myFile']['name']) . '<br />';
echo 'Resize billede navn: ' . $thumbDir . $thumbPrefix . basename($_FILES['myFile']['name']). '<br />';

En anden ting, hvor stort er det billede du uploader ? (jeg tænker på dimensioner ala 1600 x 1200 )
Avatar billede sthen Nybegynder
06. december 2008 - 20:35 #2
>> jacobdo

You were right
Billederne var for store (1600x1200)
Eksperimenterer lidt med det
Avatar billede sthen Nybegynder
06. december 2008 - 20:35 #3
Og så læg lige et svar
Det var jo noget jeg kunne bruge
Avatar billede jakobdo Ekspert
06. december 2008 - 20:54 #4
Svar!
Avatar billede sthen Nybegynder
06. december 2008 - 21:08 #5
Ved du hvordan jeg kan gøre, så resize-funktionen kan magte større fotos
(Fandt i øvrigt ud af, at det godt kan magte 1600x1200 men ikke større)
Avatar billede jakobdo Ekspert
06. december 2008 - 21:12 #6
Takker for point.
For at håndtere større billeder, skal du have adgang til serveren og tillade større memory_limit.
Du kan måske lave en fejlbesked, ved at benytte getimagesize() inden du begynder at resize.
Og er størrelsen over 1600 og 1200, så melder du fejl.
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