Ik heb een scriptje gemaakt voor het uploaden van bestanden in PHP. Dit is voor een soort van CMS systeempje van een klant van me. Nu werkte alles al een hele tijd heel goed, echter nu krijg ik opeens meldingen van de klant dat het niet meer werkt.
Na wat navragen bleek dat hij de laatste tijd vooral wat grotere bestanden wilde uploaden (500 kb tot 5mb!), terwijl ze daarvoor altijd klein waren (tot +/- 200kb).
Toen ben ik gaan proberen, en inderdaad, het werkt gewoon goed, zolang de bestanden die je wilt uploaden niet te groot zijn (ik heb de exacte grens niet opgezocht).
Echter wil ik ook grote bestanden kunnen uploaden Mijn vraag was of de fout in de volgende PHP code zit, of dat het HTTP protocol of zo misschien niet zulke grote bestanden aan kan (o.i.d.). en wat zou dan een oplossing kunnen zijn?
<?php
$error_nr = 0;
if ($update == 1)
{
$upload = 0;
// Variabelen
$filename = explode("\\", $bestand_name);
$filename_laatste = count($filename) - 1;
$filename = "$filename[$filename_laatste]";
$filename_extentie = substr($filename, count ($filename) - 4, 3);
$extentie_toegestaanarray = explode (",", $extentie_toegestaan);
$extentie_aantal = count ($extentie_toegestaanarray);
// Errors
$error[0] = "";
$error[1] = "<FONT size = '1'><FONT color = 'red'>Het bestand \"$filename\" is groter dan groter dan $remote_maxsize bytes.</FONT></FONT>";
$error[2] = "<FONT size = '1'><FONT color = 'red'>De extentie \".$filename_extentie\" is niet toegestaan (Enkel: $extentie_toegestaan).</FONT></FONT>";
$error[3] = "<FONT size = '1'><FONT color = 'red'>De bestandsnaam mag maximaal 12 tekens zijn (inc. extentie en punt).</FONT</FONT>";
if (strlen($filename) <= 12)
{
for ($i = 0; $i < $extentie_aantal; $i++)
{
if ($extentie_toegestaanarray[$i] == $filename_extentie)
{
if ($bestand_size > $remote_maxsize)
{
$error_nr = 1;
}
else
{
copy($bestand, "$remote_map$filename");
exit();
}
}
}
}
}
?>
Deze code wordt uitgevoerd na het selecteren van een bestand in een "file" veld van een form. In dit form staan ook enkele variablen in hidden files welke in de code worden gebruikt:
$update = 1
$extentie_toegestaan = "pdf,txt,zip,doc"
$remote_maxsize = 10485760 (10mb)
$remote_map = "../download/"
Het werkt dus wel met kleine bestanden, niet met grotere, terwijl deze wel kleiner zijn dan de aangegeven 10MB. Bovendien zou het script een melding geven als het bestand te groot is, maar dit zegt het niet. Het doet gewoon alsof alles goed is gegaan, maar het bestand blijkt dan niet te zijn geupload.
Thnx!

Likes:


).
