downloadlink maken van bestanden in map
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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.";
}
?>
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.";
}
?>
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.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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.";
}
?>
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.
en zijn er bijzonderheden waar ik moet op letten qua veiligheid?
De paden opslaan in je DB tijdens het uploaden.
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
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.
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.
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?