Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

maximale grootte uploaden images

None
6 antwoorden
  • Hallo Allemaal,
    In ben op zoek gegaan naar een eenvoudig php script om foto's te resizen en uploaden voor gebruik op een site.
    Ik heb een script gevonden wat deed wat ik wilde alleen kan ik geen foto's uploaden die groter zijn dan 2 Mb.
    De instelling hiervoor is $maxkb = waarde, deze waarde staat op 4194304 wat overeen komt met 4 mb.
    Heeft iemand enig idee waarom ik toch geen foto's kan uploaden groter dat 2 Mb?

    Hier is het PHP scriptje:
    [code:1:7e0ee966f9]<?php
    error_reporting(E_ALL);
    session_start();

    $maxkb = 4194304; // maximale grootte van bestand (ook i.v.m. datalimiet)

    ?>

    <html>
    <head>
    </head>
    <body>
    <h3>Uploaden plaatjes</h3>
    <?php
    if(isset($_POST['map']))
    {
    if($_POST['map'] == 'this')
    {
    $path = './';
    }
    else
    {
    $path = $_POST['map'].'/'; // map waarna geupload moet worden met eindslash
    }
    }
    else
    {
    $path = './';
    }

    if(isset($_POST['resize_breedte']))
    {
    $user_breedte = $_POST['resize_breedte']; // breedte van de nieuwe image
    }

    //— bekijk of het bestand kleiner of net zo groot als de maximaal opgegeven grootte is en of de foto wel geupload is en of extentie wel .jpg of .jpeg is!
    if(isset($_POST['submit']) && $_FILES['userfile']['size'] <= $maxkb &&
    !file_exists($path . $_FILES['userfile']['name']) &&
    $_FILES['userfile']['size'] &&
    is_uploaded_file($_FILES['userfile']['tmp_name']) &&
    (strtolower(substr($_FILES['userfile']['name'], -3)) == "jpg" || strtolower(substr($_FILES['userfile']['name'], -4)) == "jpeg"))
    {

    //— upload image naar $path
    move_uploaded_file($_FILES['userfile']['tmp_name'], $path . $_FILES['userfile']['name']);

    //— achterhaal de eigenschappen van de foto
    list($breedte, $hoogte, $image_type) = getimagesize($path . $_FILES['userfile']['name']);

    //— bepaal de verhouding tussen hoogte en breete
    $image_ratio = $hoogte / $breedte;

    //— bereken op basis van de raio de nieuwe hoogte
    $rs_breedte = $user_breedte;
    $rs_hoogte = $user_breedte * $image_ratio;

    //— maak resize image aan in het geheugen
    $resize = imagecreatetruecolor($rs_breedte, $rs_hoogte);
    //— bron om te resizen
    $source = imagecreatefromjpeg($path . $_FILES['userfile']['name']);
    //— foto resize
    imagecopyresampled($resize, $source, 0, 0, 0, 0, $rs_breedte, $rs_hoogte, $breedte, $hoogte);
    // foto opslaan
    imagejpeg($resize, $path . $_FILES['userfile']['name']);

    $image = imagecreatefromjpeg($path . $_FILES['userfile']['name']);
    $size = getimagesize($path . $_FILES['userfile']['name']);

    {

    //— upload image
    imagejpeg($image, $path . $_FILES['userfile']['name']); // max. kwaliteit

    imagedestroy($image);

    }

    $_SESSION['image'] = $path.$_FILES['userfile']['name'];

    echo '<meta http-equiv="refresh" content="2;url=?uploaded=ja">';
    echo 'Succesvol geupload, en ogenblik geduld a.u.b.';
    }
    elseif(isset($_GET['uploaded']) && isset($_SESSION['image']))
    {
    echo 'De foto is geupload. Je kunt de foto bekijken door op de onderstaande link te klikken:<br />';
    echo '<a href="' . $_SESSION['image'] . '">' . $_SESSION['image'] . '</a><p>';
    echo '<img src="' . $_SESSION['image'] . '"><p>';
    echo '<a href="' . $_SERVER['PHP_SELF'] . '">upload nog een foto</a>';
    }
    else
    {
    //— errors
    if (isset($_POST['submit']))
    {
    if (file_exists($path . $_FILES['userfile']['name']) && $_FILES['userfile']['name'])
    {
    echo '<b>Error! Bestand bestaat al, hernoem de foto en probeer het opnieuw.</b><br><br>';
    }
    elseif ($_FILES['userfile']['size'] > $maxkb)
    {
    echo '<b>Error! Bestand is groter dan " . $maxkb . "bytes. Verklein de foto en probeer het opnieuw</b><br><br>';
    }
    elseif (strtolower(substr($_FILES['userfile']['name'], -3)) != "jpg" && strtolower(substr($_FILES['userfile']['name'], -4)) != "jpeg")
    {
    echo '<b>Error! De foto heeft een verkeerde bestandsnaam. Er mogen alleen bestanden geupload worden met als .jpg of .jpeg als extensie.</b><br><br>';
    }
    else
    {
    echo '<b>Error! De foto is niet goed geupload of er is helemaal geen foto geupload. Probeer het opnieuw.</b><br><br>';
    }
    }
    else
    {
    if(isset($_POST['creatdir'])){
    if(!empty($_POST['mapname']))
    {
    mkdir("./".$_POST['mapname'], 0755);
    echo 'de map '.$_POST['mapname'].' is aangemaakt<br><br>';
    }
    else
    {
    echo '<b>de opgegeven bestandsnaam is leeg</b><br><br>';
    }
    }

    if(isset($_POST['userfile']))
    {
    $file = $_POST['userfile'];
    }
    else
    {
    $file = " ";
    }

    echo '<form method="post" action="' . $_SERVER['PHP_SELF'] . '" enctype="multipart/form-data">';

    $handle = opendir($path);

    echo 'Selecteer doelmap: <select name="map" style="z-index: 1;">';
    echo '<option value="this">Deze map</option>';

    while (false!==($file = readdir($handle)))
    {
    if ($file != "." && $file != "..")
    {

    if (is_dir($file))
    {
    echo '<option value="'.$file.'">'.$file.'</option>';
    }
    }
    }

    echo '</select><br><br>';


    closedir($handle);

    //— formulier met enctype multipart/form-data ivm de file upload
    echo '<input type="hidden" name="MAX_FILE_SIZE" value="' . $maxkb . '" />
    Nieuwe breedte: <input name="resize_breedte" type="text" value="500" size="4" maxlength="4">px<br /><br>
    Bestand: <input type="file" name="userfile" value="' . $file . '" /><br /><br>
    <input type="submit" name="submit" value="uploaden" onclick="';
    echo "document.getElementById('bezig').style.visibility='visible'";
    echo '" />
    </form><br><br><div id="bezig" style="visibility: hidden;">bezig met uploaden</div>';
    }
    }
    ?>
    </body>
    </html>

    [/code:1:7e0ee966f9]

    Wie o wie!
  • Zou het een beperking van de server kunnen zijn? Instelling van php?
  • Dat zou natuurlijk ook kunnen, ik ga even zoeken.
    Bedankt in ieder geval gerben!
  • Het is namelijk een simpele manier om een server plat te krijgen. Of in ieder geval flink te laten zweten. Gebruik gewoon een form op een bestand van 100MB of meer te uploaden, doe dat een paar keer, en het geheugen loopt vanzelf vol.
  • Ok dat begrijp ik een extra beveiliging dus.
    Ik zie in mijn phpinfo staan dat de upload_max_filesize 2M is dus die zal ik dan moeten (laten) aanpassen.
    Of zijn er dan nog meer waardes waar ik op moet letten of die ook aangepast moeten worden?
  • Daar moet je jezelf even verder in verdiepen. Ik ben geen php expert. Maar ik heb zelf een keer een soortgelijk script in perl geschreven. Een script voor een makelaar, om huizen te koop aan te bieden, met de mogelijkheid foto's te uploaden. En toen kwamen die vragen en mogelijkheden bij me op.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.