Werken met bestanden in een ledensysteem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

Jordy Deweer

Jordy Deweer

07/08/2017 14:21:42
Quote Anchor link
Hoe werken die headers eigenlijk? Gewoon ter vervollediging van de vraag, hoe kan ik zeggen aan de browser dat hij de PDF-reader moet openen i.p.v.p een download box?
 
PHP hulp

PHP hulp

27/05/2026 07:32:40
 
Ben van Velzen

Ben van Velzen

07/08/2017 14:41:53
Quote Anchor link
Je kan niet zeggen open de PDF reader, je kan alleen zeggen "hey dit is een PDF bestand", en dat doe je door het juiste mimetype door te geven, ofwel application/pdf.
 
Jordy Deweer

Jordy Deweer

07/08/2017 14:45:15
Quote Anchor link
is dat dan met de header-functie? dus zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
header('mime-type: application/pdf');
readfile('path/to/the/saved/pdffile');
?>
 
Thomas van den Heuvel

Thomas van den Heuvel

07/08/2017 14:46:05
Quote Anchor link
Je kunt de browser gelukkig geen instructies geven om externe programma's te openen, daar zouden veiligheidsrisico's aan kleven.

Elk bestand wat je opvraagt via de browser, wat meestal via het HTTP protocol gebeurt, identificeert zijn bestandstype via de Content-Type header (waarmee je in feite een MIME-type instelt, zoals @Ben aangeeft). Vervolgens controleert de browser of deze het bestandstype verder af kan handelen.

Indien de browser een PDF-plugin heeft en er een PDF-document wordt opgevraagd (en dit document ook als zodanig geserveerd wordt, je zou een PDF-document ook als een anoniem bestandstype kunnen serveren als application/octet-stream, maar misschien is de browser alsnog slim genoeg om uit te vogelen dat dit een PDF-bestand is) dan zal deze direct inline worden weergegeven, tenzij je je browser of plugin zo geconfigureerd hebt dat er iets anders moet gebeuren (bijvoorbeeld dat het bestand eerst lokaal opgeslagen zou moeten worden ofzo).
 
- Ariën  -
Beheerder

- Ariën -

07/08/2017 14:50:50
Quote Anchor link
Example #1 bij header

header('Content-Type: application/pdf');
 
Jordy Deweer

Jordy Deweer

07/08/2017 15:10:36
Quote Anchor link
Dus dit is dan het juiste? Bron: PHP Reference

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
<?php
$file
= 'monkey.gif';

if(file_exists($file))
{

    header('Content-Description: File Transfer');
    header('Content-Type: application/pdf');
    header('Content-Disposition: attachment; filename="'.basename($file).'"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: '.filesize($file));
    readfile($file);
    exit;
}

?>
 
- Ariën  -
Beheerder

- Ariën -

07/08/2017 15:13:02
Quote Anchor link
Dat is voor een geforceerde download-popup. En daar heb je geen application/pdf voor nodig, maar een application/octet-stream.

We waren al in de buurt. Alleen de readfile() met de header('Content-Type: application/pdf'), en je bent er.
Wel zou ik dan alsnog wel file_exists() gebruiken om te kijken of het bestand bestaat.
Gewijzigd op 07/08/2017 15:14:19 door - Ariën -
 
Jordy Deweer

Jordy Deweer

07/08/2017 15:21:07
Quote Anchor link
Dus zo?:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$bestand
= 'bestand.pdf';

if(file_exists($bestand)) {
  header('Content-Type: application/pdf');
  readfile($bestand);
  exit;
}
else {
  echo "Het bestand dat werd opgevraagd bestaat niet, of er is een onverwachte fout opgetreden.";
}

?>
Gewijzigd op 07/08/2017 15:25:12 door Jordy Deweer
 
- Ariën  -
Beheerder

- Ariën -

07/08/2017 15:27:38
Quote Anchor link
Het ziet er wel goed uit. Probeer het eens uit.
 
Jordy Deweer

Jordy Deweer

07/08/2017 16:42:32
Quote Anchor link
Oké. Dat werkt volledig.
Daarbij is dit topic volledig opgelost! Dank jullie wel voor alle erg goede commentaren.

Misschien wel nog dit:
Als de browser geen PDF-plugin heeft, zal deze dan op de computer kijken of die daar een bestand kan vinden?
En nog een vraagje daarbij aansluitend: als de browser kijkt voor een programma, en het kan niets vinden... wat doet het dan? Geeft het dan het download venster weer??
 
- Ariën  -
Beheerder

- Ariën -

07/08/2017 17:08:38
Quote Anchor link
Als de browser geen PDF-plugin heeft, dan wordt er gekeken of er een ander programma geinstalleerd is die overweg kan met PDF's. En als die er niet is, volgt er een foutmelding.

Daarom raad ik een geforceerde download aan. Daarin kan de gebruiker in het dialoog-venter zelf kiezen waarin hij het bestand wilt openen, en anders zelf het bestand op wilt slaan op een eigen locatie. Dit kan bijvoorbeeld een USB-stick zijn als hij het op een andere computer wilt bekijken, waar hij wel de mogelijkheden heeft. Dit type zie ik bijna altijd op websites waar ik administratieve overzichten kan downloaden.
Gewijzigd op 07/08/2017 17:09:32 door - Ariën -
 
Ben van Velzen

Ben van Velzen

07/08/2017 18:23:45
Quote Anchor link
>> Als de browser geen PDF-plugin heeft, dan wordt er gekeken of er een ander programma geinstalleerd is die overweg kan met PDF's. En als die er niet is, volgt er een foutmelding.
Volgens mij klopt dat niet. Wanneer er geen plugin aanwezig is wordt het effectief een geforceerde download.
 
Jordy Deweer

Jordy Deweer

07/08/2017 19:35:37
Quote Anchor link
Hoi allemaal.

Bij mij wordt er geregeld een PDF geopend in het programma zelf, als ik via Internet Explorer ga.

Ik ga zien wat ik precies ga gebruiken. Waarschijnlijk wordt het een geforceerde download, maar wilde het ook vooral weten voor de kennis. Of misschien gebruik ik het samen...

Bedankt iedereen.
 

Pagina: « vorige 1 2



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.