Ik gebruik volgende code om mappen te lezen:
$openmap = opendir($map);
while($item = readdir($openmap))
{
if(is_dir($item))
{
$mappen[] = $item;}
Het probleem is dat PHP geen onderscheid maakt tussen een map en een file, wat hij normaal wel zou moeten doen. PHP denkt dat alles een file is, en geen enkele map zou er tussen zitten. Hij toont wel de "mappen" maar dan als file. Heb al verschillende scripts bekeken en allemaal zien ze er gelijkaardig uit.
Iemand een oplossing?
je moet kijken of er een extentie achter staat:

<?
if (strstr($file, ".")) // kijken of er een punt in staat
echo "file";
else
echo "map";
?>

alleen zoals je weet is dit niet 100% omdat er ook bestanden zijn zonder extentie..
en mappen met punten erin:P,
maar kun je niet zon check doen met filesize().

zoiets als dit:
<?php
$file = "uploads";
$size = filesize($file);

if ($size != 0)
{
echo "is een bestand, met een grote van " . $size;
}else{
echo "is een map";
}

?>
dit kan werken omdat een map altijd de waarde "0 terug geeft bij filesize, dus kun je bestanden onderscheiden van mappen, zelfs bestanden zonder extensie hebben een size.

greetz thijs
of het kan ook zo

<?php
$file = "uploads/smiley";
$type = filetype($file);

if ($type == "file")
{
echo "is een bestand";
}else{
echo "is een map";
}

?>

met de functie filetype(), deze geeft of file of dir terug. en dat weet je het zeker

<!-- edit !-->
maar het kan ook nog is zo,
<?php
$file = "uploads/smiley";

if (is_file($file))
{
echo "is een bestand";
}else{
echo "is een map";
}

?>
dit spreekt natuurlijk voor zichzelf, hij checked of het een file is en returned TRUE of FALSE.

Conclusie je hebt nu 3 waterdichte systemen om te checken of iets een map of bestand is.

greetz thijs
Bedankt voor de verschillende oplossingen :p). Alles ligt voor de hand, ge moet er natuurlijk opkomen é...
Greetz

Reageren