Hey, Ik heb een scriptje gevonden maar zit met het probleem dat het skript bestaande files overschrijft... Nou ben ik niet zn held met PHP, ik kan wel ongeveer zeggen wat er gebeurd maar kan het niet zelf schrijven. Hieronder zet ik een link waar je de files en bijbehorende dingen kunt downloaden:

http://cloud.yor-it.nl/index.php/s/IbCRPrYpo39wd2d

Het zou fijn zijn als iemand mij hiermee kan helpen... dat er bijvoorbeeld een random nummer achter gezet wordt.

Alvast bedankt,
Sander
Ik ga er vanuit dat het werkt. Probeer het eens zou ik zeggen.
Ik heb nu dit maar het probleem is dat de couter ++ niet werkt... hij vervangt de "+1" file...

en ja ik weet het... het is vast een puinhoop en kan veel netter :P ban al lang blij dat ik het zover geregeld kon krijgen


<?php

// A list of permitted file extensions
$allowed = array('png', 'jpg', 'gif');

if(isset($_FILES['upl']) && $_FILES['upl']['error'] == 0){

    $extension = pathinfo($_FILES['upl']['name'], PATHINFO_EXTENSION);

    if(!in_array(strtolower($extension), $allowed)){
        echo '{"status":"error"}';
        exit;
    }

    $counter = 1;
    $sometarget= 'uploads/'.$_FILES['upl']['name'];
    $target = $sometarget;

    while(file_exists($sometarget)) {
     $path = pathinfo($sometarget);
	 $filename = $path['filename'];
	 $dirname = $path['dirname'];
	 $extension = $path['extension'];
	 $sometarget = $filename . $counter;
     $counter++;
	 $sometargetfull = $dirname . "/"  . $sometarget . "." . $extension;
    }
    if(move_uploaded_file($_FILES['upl']['tmp_name'], $sometargetfull)){
        echo '{"status":"success"}';
    } else {
        echo '{"status":"error"}';
        exit;
    }
}

echo '{"status":"error"}';
exit;
?>
Dus hij moet feitelijk oneindig kunnen doortellen?
Dus image_huis1.jpg, image_huis2.jpg, image_huis3.jpg etc?
het probleem is, dat vooraf (voor regel 19) $sometarget een compleet naar een file bevat.

Een paar regels verder vervang je dat door allen de filename (zonder path en zonder extensie), maar met een getalletje.

Op regel 26 introduceer je $sometargetfull.
Dat is overbodig, en ook ongewenst, want $sometarget is nu nog steeds zijn path en extensie kwijt.

als /local/path/op/server/file.txt bestond, dan zal "file1" niet bestaan. (want geen path en geen extensie.

Kortom: weg met $sometargetfull...
<?php

// A list of permitted file extensions
$allowed = array('png', 'jpg', 'gif');

if(isset($_FILES['upl']) && $_FILES['upl']['error'] == 0){

$extension = pathinfo($_FILES['upl']['name'], PATHINFO_EXTENSION);
$basename = pathinfo($_FILES['upl']['name'], PATHINFO_BASENAME);

if(!in_array(strtolower($extension), $allowed)){
echo '{"status":"error"}';
exit;
}

$targetdir = 'uploads/';
$counter = 1;
$sometarget = $basename;

while(file_exists($targetdir.$sometarget.'.'.$extension)) {
$sometarget = $basename . $counter;
$counter++;
}
if(move_uploaded_file($_FILES['upl']['tmp_name'], $targetdir.$sometarget.'.'.$extension)){
echo '{"status":"success"}';
} else {
echo '{"status":"error"}';
exit;
}
}

echo '{"status":"error"}';
exit;
?>
bedankt, ben blij dat het eindelijk werkt :)
Maar begrijp je het nu ook?
ongeveer... maarjah dat is alleen als ik het lees... het schrijven is een ander verhaal... maar wil het wel serieus gaan op pakken... maar dan vanaf het begin beginnen... want hier zitten functies en commandos in die ik niet ken... en als ik ga kijken bij de uitleg worden er weer andere gebruikt die ik niet ken... dus het is een beetje moeilijk om er midden in te duiken... maar ga er zeker wat mee doen :)

Reageren