Daten aus BLOB auslesen und anzeigen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Daten aus BLOB auslesen und anzeigen

    Hallo zusammen

    Eigentlich kann ich meine Frage kurz fassen...

    Warum funzt das nicht:
    PHP-Code:
    <? session_start();
    include($_SERVER['DOCUMENT_ROOT'] . "/inc/config.inc.php");
    include($_SERVER['DOCUMENT_ROOT'] . "/inc/as400.inc.php");

    $svSQL  = "call MARKT.MAILBOXGETNR('$user', $nummer)";
    $res = odbc_exec($connectionID,$svSQL);
    $aRow=odbc_fetch_myarray($res);

    header('Content-Type: application/pdf');
    ?>
    <body>
    <? 
    // echo $aRow["MIMETYPE"];
    echo $aRow["FILEINH"];  ?>
    </body>
    </html>
    Aus der Variable $aRow["MIMETYPE"] erhalte ich den MimeType, welcher das in der Variable $aRow["FILEINH"] enthaltene Dokument hat.

    Die Daten in $aRow["FILEINH"] werden aus einen BLOB-Feld ausgelesen.
    Den Content-Type habe ich im Moment hart codiert, aber wenn das funzt, wird natürlich die Variable übergeben.

    Der Zugriff und das Auslesen aus der DB geht. Nur die Anzeige macht Schwierigkeiten. Die Daten werden nicht als PDF sondern als Datenstream angezeigt.


    Nach dem durchlesen einiger Beiträge zum Thema hier im Forum, müsste das so allerdings funktionieren. (ja, ich hab die Boardsuche verwendet)

    Danke für eure Tipps.


    Gruss
    Philipp

  • #2
    seufz, was haben denn die HTML-Tags darin verloren? nimm sie raus, dann funz auch.

    Kommentar


    • #3
      hab ich gemacht...

      Jetzt will der Browser die php-Datei downloaden. Wenn ich dann auf öffnen klicke, dann kommt die Meldung, dass er die Datei nicht finden kann..


      P.S.: das ist genau das Problem, wie es schon von einigen anderen hier beschrieben wurde. Nur eine wirkliche Lösung hab ich nirgends gefunden...
      Zuletzt geändert von philippCH; 16.03.2005, 13:16.

      Kommentar


      • #4
        dann sende doch vernünftige, komplette header für den d/l

        Kommentar


        • #5
          ... und sei sicher, dass dein Browser diese auch versteht. Kein blöder Witz, hat mich schon mal zwei Tage gekostet.

          Kommentar


          • #6
            Also mein Browser, mit dem ich das ganze teste ist der IE 6.0.2900.

            Die win-typische Sicherheitswarnung, die bei jedem Downloadversuch erscheint besagt auch, dass es sich um ein pdf handelt, das heruntergeladen werden soll...

            Nur wär's jetzt noch schön, wenn mir jemand sagen kann, was den ein "vernünftiger" Header sein soll. Weder das Forum, noch der Link von asp2php bringen mich weiter. Und Google schon gleich gar nicht.

            Alles was ich rausfinde ist, dass es so gehen müsste. Tut es aber nicht....

            Kommentar


            • #7
              Original geschrieben von philippCH

              Nur wär's jetzt noch schön, wenn mir jemand sagen kann, was den ein "vernünftiger" Header sein soll. Weder das Forum, [color=red]noch der Link von asp2php bringen mich weiter[/color]. Und Google schon gleich gar nicht.
              nur weil du unfähig bist, weiterführende Links zu verwenden, darfst du noch lange nicht sagen, dass ich dir ungenügende Information geliefert habe

              Auszug aus Manual

              header() wird zum Senden von HTTP Anfangsinformationen (Headern) benutzt. Weitere Informationen über HTTP Header finden Sie unter HTTP/1.1 specification.
              Klick auf HTTP/1.1 und etwas nach unten scrollen: http://www.w3.org/Protocols/rfc2616/...c14.html#sec14

              Kommentar


              • #8
                nur weil du unfähig bist,...
                Danke für dein Kompliment... Aber ich hab ja auch nie das Gegenteil behauptet!!!

                Vielleicht führst du dir mal den Sinn von einem (diesem) Forum vor Augen.

                Leute, die ein Problem haben posten es hier und erhoffen sich eine Antwort, die ihnen:

                a) verständlich ist
                b) weiterhilft

                Ich schreibe ja hier nicht zur reinen Selbsbefriedigung rein, sondern weil ich eben nicht weis, was ich tun soll, wo ich den Bockmist geschossen habe. Und deine Antworten helfen mir da nunmal nicht weiter.

                Ich bin mir sicher, dass es nur ein kleiner verdammter Eintrag ist, der mir fehlt. Also warum sagst den nicht einfach!!! Dann wäre ich glücklich und diese Diskussion beendet. So wie du schreibst gehe ich nämlich davon aus, dass du die Antwort weist.


                Nachtrag:
                Das es ein Header-Problem sein könnte ist mir nun ausreichend klar. Das mir der Link, aus deinem vorigen Beitrag die Lösung geben kann auch. Aber genau derart qulifizierte Aussagen wie:
                Klick auf HTTP/1.1 und etwas nach unten scrollen
                meine ich, wenn ich sage, dass mir deine Antworten nicht helfen. Wie soll ich in einem 37 Seiten-Dokument eine Antwort auf eine Frage finden, wenn ich die Frage ja nicht mal weis...
                Zuletzt geändert von philippCH; 16.03.2005, 15:04.

                Kommentar


                • #9
                  PHP-Code:
                  <? /* VON DIR */
                  session_start();
                  include($_SERVER['DOCUMENT_ROOT'] . "/inc/config.inc.php");
                  include($_SERVER['DOCUMENT_ROOT'] . "/inc/as400.inc.php");
                  $svSQL  = "call MARKT.MAILBOXGETNR('$user', $nummer)";
                  $res = odbc_exec($connectionID,$svSQL);
                  $aRow=odbc_fetch_myarray($res);

                  /* VON DER VERLINKTEN SEITE */
                  // We'll be outputting a PDF
                  header('Content-type: application/pdf');
                  // It will be called downloaded.pdf
                  header('Content-Disposition: attachment; filename="downloaded.pdf"');
                  // The PDF source is in original.pdf
                  // readfile('original.pdf'); nein, das brauchen wir nicht (einkommentiert)

                  /* VON DIR */
                  echo $aRow["FILEINH"];
                  ?>
                  *vorkau*

                  Kommentar


                  • #10
                    @onemorenerd
                    Danke für die verständliche Antwort

                    Wenn ich dich richtig verstehe, dann gehst du davon aus, dass ich auf das Original-PDF zugreifen kann. Aber genau das kann ich nicht.

                    Die PDF-Datei liegt in einem BLOB-Feld auf dem AS/400. Und nur da.... Der Inhalt von diesem Feld steht in der Variable $aRow["FILEINH"].

                    Ich muss aus den Daten aus diesem BLOB-Feld, welche ich in der benannten Variable vorliegen habe wieder ein PDF (oder doc, xls, jpg,...) zusammensetzen und mit dem entsprechenden, für das Format passende lokale Programm, anzeigen.

                    Ob dies nun im Browser als Plug-in oder direkt mit dem Programm gemacht wird, ist dabei egal.

                    Kommentar


                    • #11
                      Ich gehe überhaupt nicht davon aus!
                      Lies http://www.faqs.org/rfcs/rfc2183, notfalls noch http://www.php-faq.de/q/q-datei-download.html (das hat mir damals geholfen).


                      EDIT:
                      ersten link gefixt
                      Zuletzt geändert von wahsaga; 16.03.2005, 15:56.

                      Kommentar


                      • #12
                        der erste Link scheint defekt zu sein.

                        Den Beitrag unter dem zweiten habe ich gelesen... 5x... aber verstehen tu ich es nicht.

                        Ich habe noch nie auf BLOB-Felder zugreifen müssen. Und wenn doch, dann hab ich davon nichts mitgekriegt, weil der Inhalt einfach nur Text war und deshalb direkt angezeigt werden konnte.

                        EDIT:
                        Ich verstehs ja schon auf Deutsch nicht. Wie soll ich denn das in Englisch auf die Reihe kriegen...
                        Zuletzt geändert von philippCH; 16.03.2005, 16:02.

                        Kommentar


                        • #13
                          Dein Problem ist:
                          Nur die Anzeige macht Schwierigkeiten. Die Daten werden nicht als PDF sondern als Datenstream angezeigt.
                          Das hat mit dem BLOB überhaupt nichts zu tun sondern einzig mit den davor gesendeten Headern.
                          PHP-Code:
                          <?
                          session_start();
                          include($_SERVER['DOCUMENT_ROOT'] . "/inc/config.inc.php");
                          include($_SERVER['DOCUMENT_ROOT'] . "/inc/as400.inc.php");
                          $svSQL  = "call MARKT.MAILBOXGETNR('$user', $nummer)";
                          $res = odbc_exec($connectionID,$svSQL);
                          $aRow=odbc_fetch_myarray($res);
                          header('Content-type: application/pdf');
                          header('Content-Disposition: attachment; filename="downloaded.pdf"');
                          echo $aRow["FILEINH"];
                          ?>
                          Was passiert?

                          Kommentar


                          • #14
                            Vielleicht macht es Sinn, wenn ich mal Schritt für Schritt sage, was ich mache:

                            Aufgerufen wird ein Link nach folgender Syntax:
                            https://www.xxx.ch/mailbox/showmail....=stm&nummer=27

                            Mit den im Link übergebenen Werten mache ich den call auf das AS/400.

                            Der Code in showmail.php entspricht jetzt genau dem, wie du in vorhin gepostet hast (copy/paste).


                            Wenn ich einen obigen Link anklicke, dann erscheint eine Downloadauforderung. Hier kann ich nun wählen, ob ich die Datei öffnen oder speichern will.

                            Aber egal was ich mache, es kommt immer die Meldung, dass die Seite nicht geöffnet werden kann, weil sie entweder nicht vorhanden oder nicht verfügbar ist.
                            EDIT:
                            Hab ich noch vergessen: Der Datenstream wird nur dann angezeigt, wenn ich keine header-infos mitgebe. Aber das ist sogar mir klar...
                            Zuletzt geändert von philippCH; 16.03.2005, 16:48.

                            Kommentar


                            • #15
                              Wenn du die beiden Header nicht sendest (auskommentierst), wird der Inhalt von $aRow["FILEINH"] angezeigt. Sendest du sie, kommen keine Daten. Die Header gehen aber schon noch raus, denn du bekommst den Download-Dialog angezeigt. Stimmt das soweit?

                              Versuch mal das (valides PDF für Acroreader6):
                              PHP-Code:
                              <?php
                              header
                              ('Content-type: application/pdf');
                              header('Content-Disposition: attachment; filename="downloaded.pdf"');
                              echo 
                              '%PDF-1.3'.chr(10).'1 0 obj << /Pages 1 0 R >> endobj trailer << /Root 1 0 R >> %%EOF';
                              ?>

                              Kommentar

                              Lädt...
                              X