login  Naam:   Wachtwoord: 
Registreer je!
 Forum

uploadscript van meerdere foto's geeft probleem

Offline Keet - 28/02/2008 20:08 (laatste wijziging 28/02/2008 20:09)
Avatar van KeetLid Hallo,

Onderstaande script heb ik voor het uploaden van meerdere files(foto's) op mijn site.
Je kunt er meerdere files mee uploaden en deze worden verkleind naar het formaat dat ik wil en er wordt een link gemaakt en deze wordt in de database geplaatst.
Er kon steeds maar 1 foto mee geupload worden maar de geruiker kan nu aangeven hoeveel er geupload moeten worden en dan worden er dmv AJAX extra input fields aangemaakt, variable q.

Dit heb ik eerst uitgeprobeerd onder een testmap waar ook de andere foto's staan van de website en dat werkt, maar nu ik dit bij een al bestaande map met foto's wil uitproberen krijg ik onderstaande foutmelding

Fatal error: Allowed memory size of 20971520 bytes exhausted (tried to allocate 2048 bytes) in /home/deskudde/domains/deskuddebuikkies.nl/public_html/fotoupload.php on line 56

Met een foto van bv 1MB krijg ik geen problemen, maar als ik er meerdere van bv 1MB tegelijk wil uploaden krijg ik de memory melding.

Weet iemand wat ik kan doen om dit te voorkomen en waarom dit niet elke keer gebeurt?
Het script is nogal traag heeft iemand een idee hoe het script sneller te krijgen is?
Onderstaande is het hele script zonder de ajax functie.
Volgens mij kan er snelheid behaald worden in het upload/verklein gedeelte, maar ik heb niet uit kunnen vinden hoe.

Ik hoop dat iemand me kan helpen.
Bvd.

[code=php]<div id="aantalupload">
<?
$gebruiker=$_GET['gebruiker'];
$mapnaam=$_GET['ond'];
//$mapnaam="testKeet";

if ($_GET["q"]!=0)
{
$aantaluploads = $_GET["q"];
//echo"q=0";
}
else
{
$aantaluploads = $_POST["aantalknop"];
//echo("q is niet 0 q is $aantaluploads");
}

include("database.php");

$sql = "SELECT naam FROM fotoalbum WHERE map='$mapnaam'";
$resultaat = mysql_query($sql);
$aantal = mysql_num_rows($resultaat);

//verklein/upload gedeelte

if ($_POST['upload']){
$counter=0;
$test2 = $_POST["aantalknop"];
//echo"<br> uploaden is gestart $aantaluploads test2 = $test2 <br><br>";

//echo"Aantaluploads voor for loop = $aantaluploads test = $test";
for ( $ii = 1; $ii <= $aantaluploads; $ii += 1)
{
getimagesize($_FILES["userfile"]["tmp_name"][$ii]);
$imgsize = $_FILES["userfile"]["size"][$ii];

//echo"Aantaluploads = $aantaluploads II = $ii";

if ($imgsize == "0")
{

//$counter=$counter-1;

}
else
{

ini_set('max_execution_time', 120);
$naam= $aantal+1;

$filename = "fotoalbum/".$mapnaam."/".$naam."-thumb.jpg";
$filename1 = "fotoalbum/".$mapnaam."/".$naam.".jpg";

$img = $_FILES['userfile']['tmp_name'][$ii];



REGEL 56 ---> $original = ImageCreateFromJpeg($img);



$originalw = imagesx($original);
$originalh = imagesy($original);

$thumbh = 100;
$thumbw= 100;
// $neworgh = 548;
$neworgw = 700;
//thumbs
$thumbratio = ($originalh / $thumbh);
$thumbdest = imagecreatetruecolor($thumbw,$thumbh);
imagecopyresampled($thumbdest,$original,0,0,0,0,$thumbw,$thumbh,$originalw,$originalh);
imagejpeg($thumbdest,$filename,70);

//nieuwe orgineel
// $orgratio = ($originalh / $neworgh);
$orgratio = ($originalw / $neworgw);

// $orgw = ($originalw / $orgratio);
$orgh = ($originalh / $orgratio);


$orgdest = imagecreatetruecolor($neworgw,$orgh);
imagecopyresampled($orgdest,$original,0,0,0,0,$neworgw,$orgh,$originalw,$originalh);

// $orgdest = imagecreatetruecolor($orgw,$neworgh);
// imagecopyresampled($orgdest,$original,0,0,0,0,$orgw,$neworgh,$originalw,$originalh);
imagejpeg($orgdest,$filename1,70);


$mapnaam = addslashes($mapnaam);
$datum = date ("Y-m-d");
$tijd = date("G:i");

$sql = "INSERT INTO fotoalbum (map,naam,datum,tijd,toestand) VALUES ('$mapnaam','$naam','$datum','$tijd',1)";
mysql_query($sql) or die("Er is iets mis gegaan met de invoer");

if ($aantaluploads==1)
{
echo"De foto is geplaatst";
}


$aantal++;
$counter++;
}




}
if ($aantaluploads>1)
{
echo"Er zijn $counter foto's geplaatst";
}
?>
<br>
Klik <a href="?id=bekijkfotosnieuw&ond=<?php echo"$mapnaam";?>" class="fotoupload">
hier</a>
om naar de foto's te gaan<br>
<? echo"of om tekst toe te voegen"; ?><br>
<? echo"Je kan ook nog een foto in dezelfde map zetten";
}
?>
//verklein/upload gedeelte tot hier
</p>
<p>Hier kunnen foto's geupload worden</p>

<form name="upload" id="upload" ENCTYPE="multipart/form-data" method="post">

<?
if($aantaluploads==0 && $_GET["q"]=="")
{
$aantaluploads=1;
}
//echo"Dit is de aantalupload test $aantal"
echo"Hoeveel foto's wil je uploaden? maximaal 20 per keer!<br>";
echo" <input type=\"text\" id=\"aantal2\" name=\"aantalknop\" value =\"$aantaluploads\" onClick=\"this.select()\">";
//echo" <input type=\"text\" id=\"aantal2\" name=\"aantalknop\" value =\"$aantaluploads\" onClick=\"this.select()\" onkeyup=\"aantalUpload(this.value)\">";
echo"<input type=\"submit\" onClick=\"aantalUpload(aantalknop)\" value=\"wijzigen\">";
?>

<br>
<br>

Upload Image
<br>
<?
if ($aantaluploads>20)
{
echo"Er mogen maximaal 20 foto's per keer geupload worden!!";
}
else
{
for ( $i = 1; $i <= $aantaluploads; $i += 1)
{

echo"<input type=\"file\" id=\"userfile[$i]\" name=\"userfile[$i]\">";
?>
<br>
<?
}
?>
<input type="submit" name="upload" value="Upload">
</form>

<?
}
?>

</div>

3 antwoorden

Gesponsorde links
Offline yetti4 - 28/02/2008 20:27
Avatar van yetti4 JS interesse roep phpinfo() op moet je ff zoeken naar max uploadsize of zoiets
dan weet je precies hoe groot je foto's moeten zijn
Offline Keet - 28/02/2008 20:46
Avatar van Keet Lid Het formaat van 1 foto gaat wel goed, maar met meerdere foto's wordt er wat opgeslagen in het geheugen waardoor de allowed memory melding komt.

Volgens mij zou ik het script om moeten bouwen zodat er 1 foto per keer in het geheugen wordt geladen, maar ik weet niet hoe dat moet.

Het upload script heb ik jaren geleden eens gevonden en zelf steeds verders aangepast en nu heb ik dus problemen met meerdere foto's in 1 keer te uploaden.
Offline yetti4 - 28/02/2008 20:50 (laatste wijziging 28/02/2008 20:51)
Avatar van yetti4 JS interesse volgens mij is bij php standaard max 2 mb upload, je krijgt idd problemen bij 2 foto's

probeer de uploadscript als functie op te roepen en je verschillende foto's in een lus een voor een te versturen dus zoiets:
$i=0;
while(foto[$i])
{
voegtoe(foto[$i]);
$i++;
}


en voegtoe(foto) is idd je upload functie
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.196s