Map Directory weergeven en openen door te klikken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Java Developer / Overheid / Complexiteit

Functieomschrijving Wil jij als Java Developer een bijdrage leveren aan een veiliger Nederland en je als Java Developer bezig houden met zeer complexe bedrijfskritische applicaties? Lees dan snel verder! Doorontwikkelen bedrijfskritische applicaties; Aanpassingen maken in de bestaande applicatie; Vertalen van jouw visie op continuous integration en continuous delivery; Debuggen van de applicatie; In gesprek gaan met eindgebruikers om verbetervoorstellen op te halen. Functie-eisen Minimaal HBO-werk en denkniveau; Minimaal 5 jaar werkervaring als Java Developer; Je bent minimaal OCP-Java SE 6 gercertificeerd; Je hebt kennis van Webservices en Continuous Integration; Je bent analytisch sterk en zowel klant- als resultaatgericht. Bedrijfsomschrijving Binnen

Bekijk vacature »

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Wat ga je doen? Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q.

Bekijk vacature »

Senior DevOps-ontwikkelaar eIDAS

Functie­omschrijving Burgers en bedrijven veilig en betrouwbaar digitaal toegang geven tot diensten en producten van het ministerie van Economische Zaken en Klimaat. Als senior DevOps-ontwikkelaar bouw je daar letterlijk aan mee. En dat doe je bij DICTU: een van de grootste en meest vooruitstrevende ICT-dienstverleners van de Rijksoverheid. Jij werkt mee aan de doorontwikkeling van eIDAS, dat staat voor Electronic IDentification Authentication and trust Services. Deze koppeling maakt de grensoverschrijdende authenticatie op overheidswebsites binnen de Europese Unie mogelijk. Het ministerie van Economische Zaken en Klimaat heeft één moderne toegangspoort voor zijn diensten en inspecties. Enkele daarvan zijn dankzij eIDAS inmiddels

Bekijk vacature »

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Wat ga je doen? Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q.

Bekijk vacature »

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Wat ga je doen? Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q.

Bekijk vacature »

Geert Buelens

Geert Buelens

04/08/2020 17:11:28
Quote Anchor link
Hallo,

Ik wil een de directory van een map laten zien en dat men de bestanden in deze map kan opnenen door bv te dubbeklikken op de bestanden. het zijn vooral pdf en txt bestanden. Ik had al een script gevonden die de bestanden in de map weergeeft maar je kan ze niet opnenen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$d
=opendir("MAP");
while ($bestanden=readdir($d) )
    {

    $bnaam="MAP/".$bestanden;
    if (is_file($bnaam) )
        {
print ("$bestanden<br>"); }
    }

closedir($d);
?>


Wie kan me hierbij helpen?

mvg,
Geert B
 
PHP hulp

PHP hulp

25/09/2020 23:45:41
 
Rob Doemaarwat

Rob Doemaarwat

04/08/2020 17:16:53
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
print ("<a href="MAP/$bestanden">$bestanden</a><br>");

Overigens lijkt $bestand me hier een toepasselijkere variabelenaam ...
 
Thomas van den Heuvel

Thomas van den Heuvel

04/08/2020 19:57:07
Quote Anchor link
Hangt ook een beetje van de waarde van "MAP" af. Als dit een directory is die buiten je webdirectory ligt, dan kun je deze bestanden niet rechtstreeks openen. Tenzij je misschien op een lokaal webservertje zit ofzo, maar dan zou je ook gewoon gebruik kunnen maken van je verkenner? :D

En tenzij je speciale voorzieningen treft en de hele zwik in je publieke webdirectory zet, dan zijn al deze bestanden dus ook voor iedereen te benaderen. De vraag is of je dat wel wilt.

Was dit niet een standaard module in Apache? Dus als het zaak is dat je overal doorheen kunt bladeren, zou je deze module wellicht kunnen gebruiken onder bepaalde omstandigheden (oa indien je Apache gebruikt). Waarom zou je dit zelf opnieuw programmeren?
 
Geert Buelens

Geert Buelens

06/08/2020 10:05:55
Quote Anchor link
Hallo,

De bedoeling is dat ik bestanden in deze map plaats die voor de bezoekers toegankelijk zijn. Aangezien het over heelwat bestanden gaat lijkt het me zinvol een pagina te maken die de bestanden in deze map weergeeft en die de bezoekers kunnen openen! In principe maakt het niet uit hoe dit gemaakt/toegankelijk wordt gemaakt

Jammer genoeg lukt het met dit niet

1 print ("<a href="MAP/$bestanden">$bestanden</a><br>");

Weet iemand een oplossing hiervoor?
Thx

mvg,
Geert B
 
- Ariën -
Beheerder

- Ariën -

06/08/2020 10:58:52
Quote Anchor link
Even het script opgeschmuckt met een extra controle of het een directory is, en deze een vaste variabele gegeven. tevens even voorzien van variabelen buiten quotes om het netter te maken. En ook de variabelenbenaming aangepast.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$directory
= "/MAP"; // misschien een slash ervoor?
if(is_dir($directory)) {
    $d=opendir($directory);
    while ($bestand=readdir($d)) {
            $bnaam=$directory."/".$bestand;
            if (is_file($bnaam)) {
            print '<a href="'.$directory.'/'.$bestand.'">'.$bestand.'</a><br>';
        }
    }
}
else {
    echo "Dit is geen directory.";
}

closedir($d);
?>
Gewijzigd op 06/08/2020 11:00:32 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

06/08/2020 17:24:25
Quote Anchor link
Zijn er ook subdirectories / is er een directorystructuur?

Je zegt dat er een hoop bestanden zijn, misschien is het dan ook handig dat deze een prettige indeling hebben.

Moet er trouwens geen toevoeging !== false in dat while-statement? Als je een directory genaamd 0 hebt valideert het while-statement tot false, dit staat ook in de documentatie. De bovenstaande code zal dus niet altijd werken, en heeft ook geen voorzieningen voor subdirectories.

En dan zul je nog onderscheid moeten maken tussen het interne en het externe pad van het bestand. Het interne pad is hoe de webserver de bestanden intern benadert. Dit gebruik je als je de bestanden inventariseert/uitleest. Het externe pad is hoe de bestanden extern worden geserveerd via de website en hoe deze voor een eindgebruiker te benaderen zijn via een browser.

Je zou de huidige directory van het php-bestand kunnen gebruiken - getcwd() - om alle bestanden en directories uit te lezen, maar dan verschijnt het PHP-bestand ook in de lijst. En dan moet je bij de weergave nog specificeren hoe dit extern heet. In het onderstaande voorbeeld is dat voor mij '/phphulp/users/geertbuelens' maar dat zou je dus naar eigen smaak moeten aanpassen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?php
// voor debugging
error_reporting(E_ALL);
ini_set('display_startup_errors', true);
ini_set('display_errors', 'stdout');

// definitie
class MyDirectoryReader {
    protected $root; // root van intern pad
    protected $list; // lijst van bestanden en directories in volgorde van uitlezen

    public function __construct($root) {
        $this->root = $root;
        $this->list = [];
    }


    public function readDir($relativePath=false, $depth=0) {
        // we houden het relatieve pad ten opzichte van $this->root bij
        if ($relativePath === false) {
            $path = $this->root;
        }
else {
            $path = $this->root.'/'.$relativePath;
        }

        if ($handle = opendir($path)) {
            while (false !== ($entry = readdir($handle))) {
                if (false === in_array($entry, array('.', '..'))) {
                    $isDir = is_dir($path.'/'.$entry);
                    // bouw de lijst en houd hierbij enkele kenmerken bij (de naam, het pad, de diepte in de structuur en of het een directory betreft)
                    $this->list[] = array(
                        'name'  => $entry,
                        'path'  => $relativePath,
                        'depth' => $depth,
                        'isdir' => $isDir,
                    );

                    if ($isDir) {
                        $this->readDir($relativePath.'/'.$entry, $depth+1);
                    }
                }
            }
        }
else {
            throw new Exception($path.' is not a directory');
        }
    }


    // voor het teruggeven van de rauwe data van de lijst
    public function getList() {
        return $this->list;
    }


    // voor het genereren van een (geneste) bulleted list
    // je zult in de aanroep aan moeten geven hoe je de bestanden serveert via je webserver

    public function getHtmlList($externalBase='') {
        $currentDepth = 0;
        foreach ($this->list as $data) {
            // sluit eerdere niveau's?
            while ($currentDepth > $data['depth']) {
                echo '</ul></li>';
                $currentDepth--;
            }

            if ($data['isdir']) {
                // indien we een subdirectory ingaan, open een nieuwe bulleted list en verhoog diepte
                ?>
<li><b><?php echo $data['name']; ?></b><ul><?php
                $currentDepth
++;
            }
else {
                ?>
<li><a href="<?php echo $externalBase.$data['path'].'/'.$data['name']; ?>"><?php echo $data['name']; ?></a></li><?php
            }
        }

        // sluit het restant geopende niveau's af
        while ($currentDepth > 0) {
            echo '</ul></li>';
            $currentDepth--;
        }
    }
}



try {
    $test = new MyDirectoryReader(getcwd()); // creatie met vermelding van startpunt (kan ook expliciet met intern pad)
    $test->readDir(); // lees alles uit

    // geef nette boom weer van alle bestanden

    ?>
<ul class="mylist"><?php
        $test
->getHtmlList('/phphulp/users/geertbuelens'); // extern pad aanpassen naar eigen smaak
    ?>
</ul><?php

} catch (Exception $e) {
    echo $e->getMessage();
}

?>
[end]
Gewijzigd op 06/08/2020 17:33:18 door Thomas van den Heuvel
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.