een bestand via link downloaden (uit dir)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marcel sauer

marcel sauer

15/03/2014 14:25:59
Quote Anchor link
hallo,

ik heb een script waar je files mee kan uploaden en op een php pagina kan terug kijken wat er in een directory staat.

hierbij wordt gewoon de hele directory uit gelezen en als links weer gegeven.

als ik nu zo'n link aan klikt opent hij het bestand in een nieuw tabblad.
ik wil dat het bestand gelijk gedownload wordt. hoe doe ik dit?

en dan zou ik ook graag de lijst met bestanden willen sorteren op naam.
hier heb ik al een tabel voor gemaakt maar dit werkt ook nog niet ....


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
<table class="sortable" align="center">
<thead>
  <tr><th>GPX</th></tr>
</thead>
<tbody>
<tr>
<td>
<?php
/* Get file stat */
$stat = stat('uploads/');
$path = 'uploads/';

$files = glob( $path . '*.gpx' );
if( is_array( $files ) && count( $files ) > 0 ) {
    sort( $files );
    foreach( $files AS $file ) {
        printf(
            '<a href="%s" target="_blank" style="color: #0000ff" >%s</a>'.'<br />' ,
            $file,
            basename( $file )
        );
    }
}

else {
    echo 'Er zijn geen gpx bestanden in de map' . $path;
    
}




?>

</td>
</tr>
</tbody>
<tfoot></tfoot>
</table>

 
Gewijzigd op 15/03/2014 14:27:06 door Marcel sauer
 
PHP hulp

PHP hulp

21/01/2022 13:15:27
 
Ward van der Put
Moderator

Ward van der Put

15/03/2014 14:30:23
Quote Anchor link
Verwijder target="_blank" uit de link. Voeg daarnaast in .htaccess deze regel toe:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
AddType application/octet-stream .gpx
 
Erwin H

Erwin H

15/03/2014 14:38:50
Quote Anchor link
Misschien is het volgende niet van toepassing, maar dat is niet op te maken uit je vraag.
Maar let op dat je op deze manier iedereen toegang geeft tot alle bestanden. Als de bestanden dus per user getoond worden, dan kan je door de link te raden de andere bestanden ook downloaden. Als dat niet moet kunnen zou ik er een php scriptje tussen plakken. Dus de download link gaat naar een php script, dat controleert of de gebruiker het mag zien en downloaden en dat script biedt het bestand vervolgens (met de juiste headers) aan voor download. Bestanden zet je verder in een niet publieke directory.
 
Marcel sauer

marcel sauer

15/03/2014 14:42:30
Quote Anchor link
ok ik heb nu een htaccess file gemaakt met kladblok (had ik nog niet)
en daar heb ik deze ene zin in gezet.

ik heb de htaccess file in de map uploads gezet.
en in het php script target="_blank" verwijderd.

nu werkt het nog exact zoals voorheen .... het php bestand met het script staat op de root.
 
Ward van der Put
Moderator

Ward van der Put

15/03/2014 14:46:43
Quote Anchor link
Heb je Apache herstart?
 
Marcel sauer

marcel sauer

15/03/2014 14:54:04
Quote Anchor link
uhhh sorry? ik heb geen idee wat je daar mee bedoelt....
 
Ward van der Put
Moderator

Ward van der Put

15/03/2014 14:59:02
Quote Anchor link
Zet eens tijdelijk een regel onzin in .htaccess? Als de server dan niet op een 500 Internal Server Error blijft hangen, weet je dat het .htaccess-bestand niet wordt gebruikt.
 
Marcel sauer

marcel sauer

15/03/2014 16:12:11
Quote Anchor link
ik heb een gewone zin er in gezet en ik krijg nu de 500 internal server error dus de .htaccess gebruikt hij wel.

edit : ik heb de htaccess opnieuw geplaatst en de folder met bestanden gewist en opnieuw aangemaakt en nu werkt het wel! super!!!

heb je ook nog een idee hoe ik deze via een tabel verder kan sorteren?
ik heb meerdere tabellen waar het wel mee kan alleen deze werken met mysql.
Gewijzigd op 15/03/2014 16:50:34 door marcel sauer
 



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.