php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 05.01.2006, 19:09  
Gast
 
Beiträge: n/a
Standard Problem bei Bildern aus blobs

Hi

bei dem Versuch, mit php 5.1.1, bilder aus der Datenbank, mysql 4.0.26 , auszuesen bekomme ich jedoch kein bild angezeigt, obwohl ein datensatz gefunden und daten übertragen werden.

der code hierfür ist:

$query = "SELECT type, image, name, secure FROM image WHERE name='$name'";
$result = mysql_db_query($dbname,$query);

$query_data = mysql_fetch_array($result);
$image = $query_data['image'];
$type = $query_data['type'];

header("Content-type: $type");
echo $image;

Im browser, in diesem fall firefox, wird das bild nicht angezeigt.
wenn man sich die "grafik anzeigen" lässt erhält man nur:

http://localhost/get_blob.php?name=derNameDesBildes.jpg
Laut eigenschaften der "seite" ist der content-type richtig

in der Quelltext-Anzeige beginnt das bild mit einer leerzeile "zuviel".
speichert man die datei ab und vergleicht sie mit dem original gleichen sie sich nicht.

Ist dies ein Zeichensatzproblem, das die binärdaten falsch umgewandelt werden, und wenn ja wie kann man es beheben.

für konstruktive hilfe wäre ich sehr angetan,
jalu
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 05.01.2006, 19:20  
Gast
 
Beiträge: n/a
Standard

Zitat:
wenn man sich die "grafik anzeigen" lässt erhält man nur:

http://localhost/get_blob.php?name=derNameDesBildes.jpg
Laut eigenschaften der "seite" ist der content-type richtig
Danke, sehr aussagekräftig.

Mehr Fehlerbehandlung und -ausgabe. Dafür weniger überflüssiger Schnickschnack (wie $x=$y)
PHP-Code:
<?php
error_reporting
(E_ALL);
ini_set('display_errors'true);
// $name wurde hoffentlich gegen sql injections behandelt?
$query "SELECT type, image, name, secure FROM image WHERE name='$name'";
// db_query ist seit langer Zeit deprecated: $result = mysql_db_query($dbname,$query);
mysql_select_db($dbname) or die(mysql_error());
mysql_query($query) or die(mysql_error().': '.$query);

$query_data mysql_fetch_array($result);
if (!
$query_data) {
    die(
'keine Daten gefunden');
}
if (!
headers_sent()) {
    
header('Content-type: '$query_data['type']);
    echo 
$query_data['image'];
}
?>
  Mit Zitat antworten
Alt 05.01.2006, 20:12  
Gast
 
Beiträge: n/a
Standard

fehler werden nicht geworfen, es werden ja auch daten selektiert.

um das ganze zu verbildlichen

so sieht es aus wenn ich das bild direkt aufrufe:


so sieht es aus wenn ich mir den "quelltext" des bilds anzeige:

die rot eingekreiste leerzeile sollte nicht sein imho.
acdsee kann die so abgespeicherte datei lesen. paint zb ned

wenn ich das selbe bild statisch einbinde, aus dem dateisystem heraus, dann funktioniert es und ich habe diese leerzeile am anfang nicht.
(wenn ich das ganze ohne aus der datenbank heraus ohne header() ausgebe dann habe ich diese leerzeile am anfang nicht
  Mit Zitat antworten
Alt 06.01.2006, 02:24  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

http://www.php-faq.de/q/q-db-blob.html

Halt dich dran und du hast keine so dämlichen Probleme, wo was der Geier dran Schuld sein könnte.
Wahrscheinlich ists so nen blöder Fehler, dass dein MIME-Typ oder der SQL-Befehl doch nicht stimmt. Ich seh ihn zumindest nicht auf den ersten Blick, aber so Probleme sind echt überflüßig..
Zergling-new ist offline   Mit Zitat antworten
Alt 06.01.2006, 20:47  
Gast
 
Beiträge: n/a
Standard

ein beeindruckend freundlicher ton herrscht hier ja vor.

ich habe das beispiel umgesetzt, half ned.

http response header kommt wie folgt an:
Date: Fri, 06 Jan 2006 19:13:23 GMT
Server: Apache/2.0.52 (Win32) PHP/5.1.2RC3-dev
X-Powered-By: PHP/5.1.2RC3-dev
Cache-Control: no-store, no-cache, max-age=0, must-revalidate
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: image/jpeg

200 OK


datenbank, php und apache haben iso-8859-1 als charset eingetragen

jeglicher ausgabe von php, egal ob echo´tes html oder aus der datenbank
beginnt nach dem header mit hex "09 09 0D 0A" (tab tab cr lf)

statische dateien die vom apache übertragen ist es nicht enthalten,
ebenso wenig in dem blob den ich aus der datenbank ausgeben will.

wenn ich testweise zwischen header und die "eigentliche" ausgabe einen "trenner" hänge so ist das "tab tab cr lf" über dem trenner.

es scheint also aus header() zu kommen und hängt wohl irgendwie mit zeichensatz oder ländereinstellungen zusammen.

bitte diesmal die antworten etwas weniger künstlich provozierend dafür mehr sachlich.
  Mit Zitat antworten
Alt 06.01.2006, 21:59  
Gast
 
Beiträge: n/a
Standard

Dann nochmal hiermit versuchen (entweder 1:1 kopiert oder garnicht, bitte)
PHP-Code:
<?php
error_reporting
(E_ALL);
ini_set('display_errors'true);
ini_set('output_buffering'0);

// $name wurde hoffentlich gegen sql injections behandelt?
$query "SELECT type, image, name, secure FROM image WHERE name='$name'";
// db_query ist seit langer Zeit deprecated: $result = mysql_db_query($dbname,$query);
mysql_select_db($dbname) or die(mysql_error());
mysql_query($query) or die(mysql_error().': '.$query);

$query_data mysql_fetch_array($result);
if (!
$query_data) {
    die(
'keine Daten gefunden');
}

ob_flush(); flush();

if (!
headers_sent()) {
    
header('Content-type: '$query_data['type']);
    echo 
$query_data['image'];
}
?>
  Mit Zitat antworten
Alt 06.01.2006, 22:23  
Gast
 
Beiträge: n/a
Standard

ok fehler selber gefunden..
hinter dem ?> tag einer include datei in welcher einige globale variablen hinterlegt sind
waren noch zeilenumbrüche..

windows zeilenumbruch = cr lf

diese hat das php engine treudoof in den den output buffer gemüllt

der include war zwar weit vor dem header() oder anderen ausgaben, ist jedoch irgendwie zwischen den http header und den eigentlichen content gekommen..

html hat die verschiebung des contents um 1 zeile nach unten zwar nicth gejuckt,
den jpeg interpreter des browsers allerdings schon

naja selbst dran dumm

dennoch danke für die mühen,
jalu
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Galerie Problem... coraplanet PHP Tipps 2008 4 06.06.2008 13:42
Sessions Problem StephenKing PHP Tipps 2008 3 16.10.2007 08:30
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
Problem mit Darstellung von Bildern >100K LP Server, Hosting und Workstations 43 20.02.2006 22:50
problem!!! PHP Tipps 2006 6 08.02.2006 11:06
[Erledigt] wieder ein Problem bei phpmailer und smtp PHP Tipps 2006 24 07.02.2006 01:07
Problem mit der Ausrichtung von Bildern HTML, Usability und Barrierefreiheit 8 26.08.2005 19:16
Problem mit Wasserzeichen auf Bildern pixelcut PHP-Fortgeschrittene 16 14.12.2004 02:36
Smarty und PHP-Skript Problem PHP Tipps 2004-2 2 03.12.2004 22:27
Problem mit Fotogalere PHP Tipps 2004-2 4 23.11.2004 22:37
[Erledigt] PHP Upload (Master Value/Local Value Problem) PHP-Fortgeschrittene 5 23.11.2004 07:21
Problem mit alter JavaScript-Funktion woods PHP Tipps 2004 1 13.08.2004 13:34
[Erledigt] Problem mit Timestamp! PHP Tipps 2004 24 08.06.2004 19:51
Login Problem PHP Tipps 2004 4 04.06.2004 18:46
foreach problem mAy^daY PHP Tipps 2004 3 02.06.2004 20:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
wie kann ich bilder von type blob aus der datenbank als galerie anzeigen javascript, $query_data, mysql blob php \content-type: image/jpeg\, php flush image secure, blob jpg php ausgabe, php mysql blob grafik kann nicht angezeigt, blob bild daten probleme, blob php jpeg, php blob to image-tag grafik kann nicht angezeigt werde, php bildblob anzeigen lassen, blob übertragung bricht ab, blob probleme, blob image firefox anzeige, mysql foto aus blob mit echo anzeigen, bild blob datenbank defekt, mysql blob php jpg nicht richtig dargestellt, crblob zeigt grafik nicht an, echo image von datenbank php, flush php blob

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:00 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.