In Ihrem Code sind einige Dinge zu beachten.
Schreiben Sie zuerst diese Überschriften richtig. Sie werden niemals einen Server senden sehen Content-type:application/pdf, der Header ist Content-Type: application/pdfin Abständen mit großgeschriebenen Anfangsbuchstaben usw.
Der Dateiname in Content-Dispositionist nur der Dateiname, nicht der vollständige Pfad dazu, und obwohl ich nicht weiß, ob er obligatorisch ist oder nicht, wird dieser Name " nicht eingepackt '. Auch dein letzter 'fehlt.
Content-Disposition: inlineimpliziert, dass die Datei angezeigt und nicht heruntergeladen werden soll. Verwenden Sie attachmentstattdessen.
Stellen Sie außerdem die Dateierweiterung in Großbuchstaben ein, damit sie mit einigen Mobilgeräten kompatibel ist. ( Update : Ich bin mir ziemlich sicher, dass nur Brombeeren dieses Problem hatten, aber die Welt hat sich von diesen entfernt, so dass dies möglicherweise kein Problem mehr darstellt.)
Abgesehen davon sollte Ihr Code eher so aussehen:
<?php
$filename = './pdf/jobs/pdffile.pdf';
$fileinfo = pathinfo($filename);
$sendname = $fileinfo['filename'] . '.' . strtoupper($fileinfo['extension']);
header('Content-Type: application/pdf');
header("Content-Disposition: attachment; filename=\"$sendname\"");
header('Content-Length: ' . filesize($filename));
readfile($filename);
Content-Lengthist optional, aber auch wichtig, wenn der Benutzer den Download-Fortschritt verfolgen und feststellen soll, ob der Download unterbrochen wurde. Wenn Sie es verwenden, müssen Sie jedoch sicherstellen, dass Sie nichts zusammen mit den Dateidaten senden. Stellen Sie sicher, dass vorher <?phpoder nachher absolut nichts ist ?>, nicht einmal eine leere Zeile.
'$filename='./pdf/jobs/pdffile.pdf';und in dieser Zeileheader("Content-Disposition:inline;filename='$filename");fehlendes Anführungszeichen hinzuzufügen .