PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks. |
 |
|

16-03-2005, 13:08
|
philippCH
Registrierter Benutzer
|
|
Registriert seit: Aug 2003
Beiträge: 161
|
|
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
|

16-03-2005, 13:17
|
asp2php
Banned
|
|
Registriert seit: Feb 2004
Beiträge: 11.745
|
|
seufz, was haben denn die HTML-Tags darin verloren? nimm sie raus, dann funz auch.
|

16-03-2005, 14:05
|
philippCH
Registrierter Benutzer
|
|
Registriert seit: Aug 2003
Beiträge: 161
|
|
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...
Geändert von philippCH (16-03-2005 um 14:16 Uhr)
|

16-03-2005, 14:19
|
asp2php
Banned
|
|
Registriert seit: Feb 2004
Beiträge: 11.745
|
|
dann sende doch vernünftige, komplette header für den d/l
|

16-03-2005, 14:25
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
|
|
... und sei sicher, dass dein Browser diese auch versteht. Kein blöder Witz, hat mich schon mal zwei Tage gekostet.
|

16-03-2005, 14:33
|
philippCH
Registrierter Benutzer
|
|
Registriert seit: Aug 2003
Beiträge: 161
|
|
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....
|

16-03-2005, 14:47
|
asp2php
Banned
|
|
Registriert seit: Feb 2004
Beiträge: 11.745
|
|
Zitat:
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, noch der Link von asp2php bringen mich weiter. 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
Zitat:
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
|

16-03-2005, 14:58
|
philippCH
Registrierter Benutzer
|
|
Registriert seit: Aug 2003
Beiträge: 161
|
|
Zitat:
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:
Zitat:
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...
Geändert von philippCH (16-03-2005 um 16:04 Uhr)
|

16-03-2005, 16:02
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
|
|
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*
|

16-03-2005, 16:13
|
philippCH
Registrierter Benutzer
|
|
Registriert seit: Aug 2003
Beiträge: 161
|
|
@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.
|

16-03-2005, 16:55
|
philippCH
Registrierter Benutzer
|
|
Registriert seit: Aug 2003
Beiträge: 161
|
|
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...
Geändert von philippCH (16-03-2005 um 17:02 Uhr)
|

16-03-2005, 17:09
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
|
|
Dein Problem ist:
Zitat:
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?
|

16-03-2005, 17:41
|
philippCH
Registrierter Benutzer
|
|
Registriert seit: Aug 2003
Beiträge: 161
|
|
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...
Geändert von philippCH (16-03-2005 um 17:48 Uhr)
|

16-03-2005, 18:16
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
|
|
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';
?>
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Thema bewerten |
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|