Een bestand downloaden

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Sandertje -

Sandertje -

25/02/2016 18:05:27
Quote Anchor link
Om een bepaald bestand te downloaden gebruik ik de volgende regel om het bestand aan te roepen en te downloaden:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
//Overige code hierboven is weggelaten.
header('Location:' . $web_adres);  // Browser doorverwijzen naar de volledige download url.
exit;
?>


Dit werkt overigens perfect.


Maar ga ik nu zoeken op internet, kom ik eigenlijk alleen maar het volgende tegen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
header ('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header ('Content-Description: File Transfer');
        header ('Content-Type: application/octet-stream');
        header ('Content-Length: ' . filesize($web_adres));
        header ('Content-Disposition: attachment; filename=' . basename($sName));
        readfile($web_adres);
?>


Is deze laatst genoemde code beter om te gebruiken of maakt het in wezen niet veel uit?
Gewijzigd op 25/02/2016 18:06:11 door Sandertje -
 
PHP hulp

PHP hulp

12/12/2024 17:37:03
 
- Ariën  -
Beheerder

- Ariën -

25/02/2016 18:08:01
Quote Anchor link
In beiden zit verschil. De eerste is een doorverwijzing naar een door jouw aangegeven URL, en de laatste is een geforceerde download.
 
Sandertje -

Sandertje -

25/02/2016 18:17:01
Quote Anchor link
Wat is het voordeel van een geforceerde download?
 
Marthijn Buijs

Marthijn Buijs

25/02/2016 18:31:49
Quote Anchor link
Nou, als jij doorverwijst naar een .html-bestand zal hij het bestand gewoon in de browser openen zoals normaal.
Maar bij een geforceerde download maakt het niet uit wat voor bestand het is en download het meteen.
 
Ivo P

Ivo P

25/02/2016 20:18:34
Quote Anchor link
Een ander verschil is, dat bij de readfile()-versie de betreffende file ook buiten de document root kan staan.
De gebruiker kan dan de file niet rechtstreeks downloaden. Hij moet bijvoorbeeld ingelogd zijn.

met
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
if(isIngelogd()) {
        header ('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header ('Content-Description: File Transfer');
        header ('Content-Type: application/octet-stream');
        header ('Content-Length: ' . filesize($web_adres));
        header ('Content-Disposition: attachment; filename=' . basename($sName));
        readfile($web_adres);

}

else {
  echo 'eerst graag inloggen';
}


?>


Bij de eerste versie (location:) weet de gebruiker na de eerste keer waar de file staat en hoe hij heet. Hij zal hem dus ook kunnen benaderen zonder ingelogd te zijn, of de url met iedereen delen.
 
Sandertje -

Sandertje -

26/02/2016 17:49:51
Quote Anchor link
Maar hoe betrouwbaar is het gebruik van een geforceerde download? Kunnen alle browsers hier wel mee overweg? Ik meen wel eens gelezen te hebben dat sommige browsers moeite met het script kunnen hebben.
 
- Ariën  -
Beheerder

- Ariën -

26/02/2016 18:00:01
Quote Anchor link
Ik zou niet weten welke browser er tegenwoordig nog problemen mee zal hebben.
 



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.