downloadlink maken van bestanden in map

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ch th

ch th

15/01/2013 17:13:34
Quote Anchor link
hallo

mijn bedoeling is om een site te maken waar bestanden geupload kunnen worden maar tevens ook kunnen worden gedownload.

Ik gebruik onderstaande code om een lijst te maken van welke bestanden zich in een map bevinden en tot hier werkt alles vlot. Ik zou willen dan tegelijkertijd een download link aan de naam van de bestanden gekoppeld wordt zodat wanneer je op de naam van een bestand klikt, dit gedownload kan worden.

Zelf raak ik er echter niet uit. Alles werkt behalve dan dat het downloaden start.
Kan iemand mij hierbij helpen.

Alvast bedankt

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
<?php
if (isset($_SESSION['id'])) {
    

  $dir = new DirectoryIterator('categorie/aa');
  
  echo "<table>";
  
  foreach ($dir as $file) {
      if (! $file->isDot())
    {

      echo "<tr>";
      echo "<a href='". realpath($file) ."'>" . $file . "</a><br />";
      echo "</tr>";
    }
  }

    echo "</table>";

}
else {
    echo "U moet ingelogd zijn om deze pagina te bekijken.<br />";
    echo "<a href='index.php'>Klik hier om in te loggen.";
}

?>
 
PHP hulp

PHP hulp

27/04/2024 05:17:23
 
Kris Peeters

Kris Peeters

15/01/2013 17:35:04
Quote Anchor link
Kijk hier eens naar mijn reactie

http://www.phphulp.nl/php/forum/topic/pdf-file-wil-niet-openen-op-juiste-wijze/87910/#630041
Dit dus voor een voorbeeld van een download die geforceerd wordt (met de headers...).

Voor de veiligheid (lees ook de reacties onder mijn reactie) zal je wel goed moeten opletten.
De ideale situatie zou zijn dat je in een database een lijst hebt met de bestanden. Dan kan je met een id werken in de download-link.

Indien je de url of bestandsnaam in de href zet ... wees heel erg voorzichtig.
 
Eddy E

Eddy E

15/01/2013 17:59:57
Quote Anchor link
Probeer dit eens:

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
<?php
if (isset($_SESSION['id'])) {
    

  $dir = glob('categorie/aa/*.*');
  
  echo "<table>";
  
  foreach ($dir as $file) {
    {

      echo "<tr>";
      echo "<a href='". $file ."'>" . $file . "</a><br />";
      echo "</tr>";
    }
  }

    echo "</table>";

}
else {
    echo "U moet ingelogd zijn om deze pagina te bekijken.<br />";
    echo "<a href='index.php'>Klik hier om in te loggen.";
}

?>


Enige wat ik dus doe is een glob gebruiken.
 
Ch th

ch th

16/01/2013 07:42:20
Quote Anchor link
en stel dat ik met een database zou werken, hoe zorg ik dan voor een efficiënte downloadlink?
en zijn er bijzonderheden waar ik moet op letten qua veiligheid?
 
Chris PHP

Chris PHP

16/01/2013 07:53:44
Quote Anchor link
De paden opslaan in je DB tijdens het uploaden.
 
Ch th

ch th

16/01/2013 08:00:49
Quote Anchor link
en stel dat ik onderverdelingen maak met mappen waar de bestanden in worden opgeslagen, is het dan best dat ik per map een tabel maak met alle bestanden dat in die map staan. of maak ik beter één tabel waar alle bestanden van alle mappen in worden opgeslagen en dan dmv een map-id mee te geven in de query om zo de bestanden te laten zien die in een bepaalde map zitten?

wat is het best als het op snelheid aankomt?
één tabel of per map een tabel?
Gewijzigd op 16/01/2013 08:04:35 door ch th
 
Erwin H

Erwin H

16/01/2013 09:11:06
Quote Anchor link
Ik zou geen van beide doen. Je moet altijd voorkomen dat je gegevens dubbel opslaat, omdat je dan in de problemen kan komen als de gegevens op 1 plek wijzigen, maar niet op de andere. Zolang je niet teveel bestanden in 1 map zet is het uitlezen van een hele map niet een al te groot probleem. Mocht het wel langer gaan duren dan kan je altijd nog cachen.
 
Chris PHP

Chris PHP

16/01/2013 10:46:14
Quote Anchor link
Je hoeft geen mappen op te slaan in je DB, alleen de paden naar je afbeeldingen. Dan heb je de map al te pakken.

Gewoon 1 tabel 'afbeeldingen', een unique id en het pad. Als het gebruiker gebonden is kun je ook het user id opslaan in het tabel en eventuele andere velden, maar dat is aan jou.
 
Ch th

ch th

16/01/2013 15:50:51
Quote Anchor link
nu is het zo; de site dient om bestanden up teloaden zodat andere deze kunnen downloaden.
ik heb de mogelijkheid voorzien om een nieuwe 'categorie' aan te maken en telkens wanneer er een nieuwe categorie wordt aangemaakt, maak ik ook een map aan met dezelfde categorie. ik dacht dus eerst alle bestanden per categorie in de daarbijhorende map op te slagen. is dit dan eigenlij overbodig als ik een tabel maak en het pad van de bestanden samen met een 'categorie_id' opslaag in de tabel en alle bestanden in 1 map?
 



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.