Jellepunk
Legacy Member
Ik ben bezig aan een fotoalbum en dat werkt perfect (tot nu toe toch), maar vanaf ik wil groter foto's uploaden van 1 tot 3 MB. krijg ik fouten van de server of krijg ik een timeout.
dit is mijn upload code
en mijn thumbnail code
Weten jullie hoe ik dit kan oplossen zonder dat de eindgebruiker moet beginnen zijn of haar foto's te verkleinen?
dit is mijn upload code
PHP:
<h2>Voeg werken toe</h2>
<?php
if($_SERVER['REQUEST_METHOD'] == "POST")
{
$map = "img/foto/";
$view = "view/";
if(!is_dir($map))
{
mkdir($map);
chmod($map, 0777);
}
if(!is_dir($map.$view))
{
mkdir($map.$view);
chmod($map.$view, 0777);
}
foreach($_FILES as $afbeelding)
{
$naam = $afbeelding['name'];
$type = $afbeelding['type'];
$temp = $afbeelding['tmp_name'];
$error = $afbeelding['error'];
$size = $afbeelding['size'];
switch($error)
{
case 0:
if(is_uploaded_file($temp))
{
if($type == 'image/jpeg' || $type == 'image/gif' || $type == 'image/png' || $type == 'image/pjpeg')
{
if($size >= 1024000)
{
echo '<p>Sorry, dit bestand is te groot om te worden geupload!</p>';
}else{
$random = randomgenerator(5);
$verplaats = move_uploaded_file($temp, $map.$random.'-'.$naam);
thumbnail($map,$view,$random.'-'.$naam,640,640);
thumbnail($map,null,$random.'-'.$naam,100,100);
if($verplaats == 1)
{
echo '<p>Er is geen error opgetreden. Het bestand is met success geupload</p>';
}else{
echo '<p>Er ging iets mis met het uploaden van '.$naam.', neem contact op met de webmaster.</p>';
}
}
}else{
echo '<p>Sorry, dit bestandsformaat accepteer ik niet!</p>';
}
}else{
echo '<p>Sorry, dit accepteer ik niet!</p>';
}
break;
case 1:
echo '<p>Error: De grootte van het bestand is groter dan wat de server aankan!</p>';
break;
case 2:
echo '<p>Error: De grootte van het bestand is groter dan 1024kb!</p>';
break;
case 3:
echo '<p>Error: Het bestand is maar gedeeltelijk geupload!</p>';
break;
case 4:
//Geen bestand geupload, we doen niks!
break;
}
}
}
?>
<form action="" method="post" enctype="multipart/form-data">
<?php
for($i=0; $i<10; $i++)
{
if(($i+1) < 10) $afb = "0" . ($i+1);
else $afb = ($i+1);
echo "Afbeelding " . $afb . ": <input type=\"file\" name=\"afbeelding" . ($i+1) . "\" size=\"60\" class=\"bestand\"/><br/>";
}
?>
<input type="submit" value="uploaden!" class="knop"/>
<input type="reset" value="Opnieuw Beginnen" class="knop"/>
</form>
PHP:
function thumbnail($map,$thumblocatie,$bestandsnaam,$breedte,$hoogte)
{
list($breedte_origineel, $hoogte_origineel, $type) = getimagesize($map.$bestandsnaam);
//We weten de breedte/hoogte van een afbeelding, we weten ook hoe groot ze moeten worden en gaan dus lekker rekenen!
if (($breedte_origineel < $hoogte_origineel) && ($breedte > $hoogte)) {
$breedte = ($hoogte / $hoogte_origineel) * $breedte_origineel;
}else{
$hoogte = ($breedte / $breedte_origineel) * $hoogte_origineel;
}
//Maak een nieuwe afbeelding aan met de juiste breedte en hoogte, openen de originele en gebruik de functie imagecopyresampled om daar een mooie afbeelding van te maken.
$afbeelding = imagecreatetruecolor($breedte, $hoogte);
switch ($type)
{
case 1:
//gif
$afbeelding_origineel = imagecreatefromgif($map.$bestandsnaam);
imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
imagegif($afbeelding, $map.$thumblocatie.$bestandsnaam);
break;
case 2:
//jpg
$afbeelding_origineel = imagecreatefromjpeg($map.$bestandsnaam);
imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
imagejpeg($afbeelding, $map.$thumblocatie.$bestandsnaam,80);
break;
case 3:
//png
$afbeelding_origineel = imagecreatefrompng($map.$bestandsnaam);
imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
imagepng($afbeelding, $map.$thumblocatie.$bestandsnaam);
break;
}
}
Weten jullie hoe ik dit kan oplossen zonder dat de eindgebruiker moet beginnen zijn of haar foto's te verkleinen?
.
: