PDF download in Android schlägt fehl

Hallo liebe Community,

ich entwickle eine Webseite mit PHP und Phalcon.
auf meiner Webseite gibt es einen Button namens Vertrag herunterladen.
Sobald man auf diesen Button klickt, öffnet er …Action/file/id.
In dieser Action nimmt er nun diese übergebene id und sucht in der Datenbank die passende PDF-Datei.
Nachdem die PDF aus der Datenbank geholt wurde, wird noch der Header gesetzt und alles weitere macht der Browser.

Pustekuchen, im Android STock Browser gehts leider nicht, da lädt er nämlich anstatt der PDF eine HTML-Seite herunter.

Arrhg bitte helft mir

Hier der Header:
header("Content-Type: " . $filemime);
header(„Content-Disposition: attachment; filename=’“ . $filename . „’“);
header("Content-Length: " . $filesize);

    $name = $pathtofile.$nameoffile;
    $fd = fopen($name, 'rb');
   
    if($fd == false)
   
        die("<font color=red>ERROR: File not found.</font>");
   
    // send the right headers
    header("Cache-Control: ");// leave blank to avoid IE errors
    header("Pragma: ");// leave blank to avoid IE errors
    header("Content-type: application/octet-stream");
    header("Content-Disposition: attachment; filename=\"" . $oldname . "\"");
    header("Content-length:".(string)(filesize($name)));
    sleep(1);
    ob_flush();
    flush();
    while(!feof($fd)) {
       $buffer = fread($fd, 2048);
       print $buffer;
    }
    fclose ($fd);

$oldname ist der ausgabe name wie beim upload (ich mache das weil ich die uniqueisiere)

probe download http://abacvs.praetorians.me/files/sequence/105/4/Sequence065487.sec

obs mit dem browser funtzt

Hi,
Phalcon kenne ich nicht.
Aber Tipp: Schau Dir mal dompdf an. Da kann man alle Ausgaben in eine html-Var schreiben und dann entweder echo $html oder in pdf ausgeben.
Das pdf wird dabei generiert. Pdf in der Datenbank speichern finde ich suboptimal.
mfG
Oliver

ich glaube er meint den dateinamen holt er aus der datenbank .

Nein, er lädt eine .htm Datei herunter, was dann die Webseite ist.
Die PDF Datei lädt er schoin seit 5 Minuten herunter, heißt es klappt was nicht.
In den Developertools sehe ich, dass er als ANtwort die PDF bekommt zumindest Firefox.
Leider gibt es keine Developertools für den Android STandard Browser, oder doch?

also mein Link ist eine HTML seite, dann kommt ein button (rotes Download Zeichen) und dort draufgeklickt wird der download gestartet ,
wichtig auch am ende ein EXIT; einzubauen , da kein HTML vorher und nachher erzeugt werden darf .
Ich hab das also so gemacht das mein Link an eine download.php via parameter übergeben wird, die dann die Seite erzeugt und den Download Link platziert (rotes Download Zeichen)
, das download_output.php hat gar keine HTML Ausgabe weder vorher noch nacher (das ist wichtig) .

Also wenn beschreibe nochmal welcher Fall gerade welcher ist

Bitte teste erstmal meinen Download und dann können wir uns mit deinem Download beschäftigen .

Übrigens hier der Code
https://github.com/sheinatz/Praetorians20xx/tree/master/download

download.php erzeugt download html
download_output.php erzeugt download datei

Hi TechPech,

leider kann ich auf die Seite nicht mehr zugreifen, aber als ich letze´tes mal versuchte
mit dem Android Standardbrowser versuchte, die Datei herunterzuladen, lud er auch nur eine HTML Seite herunter

also der link sieht zwar wie ein datei link aus , aber wie gesagt, es wird eine HTML seite produziert , und dort ist der Link drinne . Da du die größe ja in byte angegeben siehst, wäre zu prüfen ob die HTML datei der göße entspicht , dann wäre es nur ein Endungs Problem .

NEIN der LINK oben ist nicht die Datei zum downloaden , sondern nur der HTML Teil mit dem Button zum downloaden der wirklichen datei . Das ganze erzeige ich nämlich mit einem rewrite , weder liegt die datei dort, noch hiesst sie auf dem server in wirklichkeit so .

Also wenn nach klick des Roten Buttons eine HTML Datei gedownloaded wurde, dann solltest Du die größe mit der Angabe vegleichen . Du kannst Sie sogar öffnen mit einem Texteditor und solltest sowas wie ROMAN Lesen könnne da einiges ASCII codiert ist in der Binar Datei .

funktioniert wieder … irgendein schlaumeier hat den mal wieder lahmgelegt, ddas passiert ja häufig wenn man hier links postet lol

Bei meinem Android läd er ganz normal eine blablabla.sec datei ,
ist der Android Standard Browser vom S5 ,
liegt also nicht am Server sonder an deiner Programmierung
du hast irgendwo in deinem Download Programm eine HTML ausgabe …
sehr unschlau .

Hi Techpech,

erstma danke dass du den Link wieder zugänglich gemacht hast.
Also, ich habs jetzt mit 2 mobilen Browsern getestet:

Firefox Mobile:

  1. Öffne Link
  2. Klicke auf Downloadbutton
  3. titan.sec wird heruntergeladen (passt)

Android Standard Browser:

  1. Öffne Link
  2. Klicke auf Downloadbutton
  3. tita_3-1.htm wird heruntergeladen

In der htm-Datei steht drin: Error-> SELECT DOWN.,DOWN.,DOWN.,DOWN.,DOWN. FROM as DOWN WHERE DOWN.=" ;

Alles sehr komisch :confused:
Und die Header hab ich in meiner Webseite auch so verändert, hilft nichts…
Die PDF-Datei wird generiert und in der DB gespeichert.

Gruß Moooo

ich nehme auch den Android Standard browser .
kann es sein das das du kein mobil telefon nimmst ???
sondern irgendein emulator ?