Ik heb een HTML website die een directory uitleest buiten de public root (dus 1 stap terug).
De bestanden worden uitgelezen en zodra er op een PDF geklikt wordt dan gaat deze downloaden (met behulp van headers)
$path bevat de rest van de directory bijv "folder1/folder2/mijnpdf.pdf"
In een browser op de desktop komt netjes de vraag of je het bestand wilt openen of wilt opslaan.
Met een iPad wordt het bestand geopend, maar op Android wordt het bestand gedownload maar niet automatisch geopend. Met een bestand in de public root en een link erom heen (a href) wel.
Ik heb al Content-Disposition: inline geprobeerd (werd op StackOverflow voorgesteld).
Ook heb ik al een hardcoded het mimetype en filenaam gezet, maar dit werkt ook niet.
Ligt dit aan de instelling van mijn Android device of doe ik nu wat verkeerd.
De bestanden worden uitgelezen en zodra er op een PDF geklikt wordt dan gaat deze downloaden (met behulp van headers)
$path bevat de rest van de directory bijv "folder1/folder2/mijnpdf.pdf"
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| $path_full = '../files/' . $path; $path_exploded = explode('/', $path); $filename = end($path_exploded); if (file_exists($path_full)) { $finfo = new finfo(FILEINFO_MIME); header('Content-Description: File Transfer'); header('Content-Type: ' . $finfo->file($path_full)); header("Content-Disposition: attachment; filename='" . $filename . "'"); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($path_full)); readfile($path_full); } |
In een browser op de desktop komt netjes de vraag of je het bestand wilt openen of wilt opslaan.
Met een iPad wordt het bestand geopend, maar op Android wordt het bestand gedownload maar niet automatisch geopend. Met een bestand in de public root en een link erom heen (a href) wel.
Ik heb al Content-Disposition: inline geprobeerd (werd op StackOverflow voorgesteld).
Ook heb ik al een hardcoded het mimetype en filenaam gezet, maar dit werkt ook niet.
Ligt dit aan de instelling van mijn Android device of doe ik nu wat verkeerd.