"Image corrupt or truncated" bei Data-url
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
anzeigen
ausgabe
bild
code
dank
datei
datum
direkte anzeige
endung
file
image
inhalt
jemand
lade
mime
pfad
statement
tag
url
variable code
-
Hallo Forum,
ich zeige ein tag/bild">Bild in einem object-tag und als data-url an ( das liegt daran, dass ich das Bild aus einer DB auslese und später auch andere Inhalte als Bilder angezeigt werden sollen). Die Data-URL erstelle ich mit PHP:
function data_url($content, $mime = "image/png") { $base64 = base64_encode($content); return ('data:' . $mime . ';base64,' . $base64); }
Allerdings zeigt Firefox den Text an den ich zwischen <object ...> und </object> gestellt habe. In der Fehlerkonsole steht:
Image corrupt or truncated:data:image/png;base64, 4oCw usw.
Der Quelltext des object tags, den der Browser erhhält sieht so aus:
<object data='data:image/png;base64,4oCwUE5HChoKICAgCklIRFIgICBAICAgQAgGICAgwqppccOeICAgAXNSR0Igwq7DjhzDqSAgIAZiS0dEIEcgRyBHxb3DvXBQICAgCXBIWXMgIAsTICALEwEgxaHFkxggICAHdElNRQfDnAsZCgwdMcONw7nDsyAgCAtJREFUeMOaw61bTeKAuVxVED3Dp3YnW8O/xb07BRfCohIVURARRMOwd8K5cS3CouKAmgtNTOKAmsO+LcOvcXFvfcOdw7fCojDDncOTw50hM1lkel7Dt+KAuldVwqfCqk7CnVtDSXjigJzCvxrDnsOwwq8HBzw4w6DDgQEPDnhww4DigLrDvHXCvMOGL2VrTzEIw4gkIQQgSXrDv8Oiw49yKSJEw7LDqcO8BsODw7hhw7TCvBzDjiAEQeKAmT58wq0dQMOyWQR3GEcQwqIUwq8B4oSiw7HDrsucw7Rew7hrSXrDssOaw5QgNx4Mw6PDh8K3bsO8wrg0xZIjFxQgAsODw7h5w49fXwsH4oCdw4gbw4TigLBhehhoxb3DkcK8w5ZhUCQnGCDFveKAusOke8O/csOTDgjDoyPDsiDDgGQ8w4EZw7wJw7vDrBTDjMOsw5dA4oCmwqJGw4zCtxIkf8K+w4kaEMKwB1JBw4PDjGzDlQI4wqEfNSDCqQ7DtHpj4oKsw7J6w6DDlyR9ejMIKOKAmMOPwq1NTMOGwqc8J3MKy4bDj8OsRUPCkCjCgQkpJMOYw7jDk004w4DFkmcyIMWgxaHCvMOaU+KAnUXFuMKjFEZKbOKAucKgw59xwrjigqxRPMOTw6dJw754KzVAOcWhI8OqUcOURChaGnNuTwPCq8Oxw7RbWuKAoVDCoMOKasODwrZ+XMOeATPDusK1UEU0w6EPwq/DiMO5QAXCvTVqMSTCuMKBd8KPQOKAncOda8Kiwq3DscK0VGgnw6J/4oC54oCaw7LDgCXCuhUlUOKAlFhhH1EVE+KAoTBnwqQ0GcO3Ig46EQV3diBbe+KAk3PCvjwwPcOWKcOyS14jQzvDu8KwwrZAw5pnVFrCpxdI4oCawo3DrcOuw7zCoMKdwpDDteKAmMOjQlciPcOjYeKEosWSKQZvw7LigJRBwo1Gwo0oVMOZw5vCosK8wqnigJnigKHCgX40UArDosKdw604dRpcw6E3QE1Zw7sbbmIxc8OTw67igJ1gwq9cPCXigKJ5AQLDgAMkEWzDqcKywq7DoeKCrOKEosOjKsKv4oCiacKuwqfGksK8fcKpPCwLKsKyw4FUw6kuWsOS4oCeIBrLhuKAk8Oqw4TDheKAuWDCocKw4oCTw7bFksOvMzcQR3fDnMOCwr5M4oCaxZNhwrbDlhnDsyAxYG/DhsOnw4HFoMOEw5VSYMW9wrhjXsO1wrbCpeKCrMK2w5UgacOhw7wgSFnCr8Ozw5fDgwPDqsKQM2cBPHgtJQ4jw6fCnWQ9w7YecVkHMOKAmVnDpgMs4oCmw5AobuKApsKpw6U6K8O9VUzigqxay4bCseKAlOKAmUMiWcKPIG/GksOXwqgBw4HDhizCkMKpa+KAlMK8XiNvwqwwXeKEokhhGeKAukkcRknigKYIHgQ0QEcg4oChWVp0NQcQxb1PI0DDiFMdw6dkW8OqRMKpw6jDsMK5w5/CsE5K4oCTM8Ogy4bDtsOk4oC5wo8FPE52w5rCneKAokjDkmUdMMKkLSpTW+KAlMK7VCY9xpI8FMKtLkQPwqPDg0zFuATCjxAeAXok .............es geht noch eine Weile so weiter' width='400px' height='600px' type='image/png'>Leider kann diese Datei nicht angezeigt werden. Entweder du hast eine notwendiges Browserplugin nicht installiert oder du verwendest einen veralteten Browser, der Data-URLs nicht unterst�tzt.</object>
Weiß jemand wo der Fehler liegt?
Oder gibt es noch eine andere Lösung als Data-Urls und object-tag?
Physiversum -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Warum so umständlich?
<img src="data:image/png;base64,4oCwUE5HChoKICA..." alt="Was immer das Bild zeigt, oder nicht" />
Im PHP solltest du die Variable $base64 noch mit chunk_split zerlegen.
Beitrag zuletzt geändert: 22.12.2012 22:11:06 von chatter -
chatter schrieb:
Warum so umständlich?
Später sollen auch andere Dinge als Bilder angezeigt werden.
hackyourlife schrieb:
Base64: woher bekommst du die Variable
? Stimmt der Inhalt oder ist der auch schon falsch?$content
Danke! Der Inhalt der Datei war falsch. Wenn ich das Bild mit file_get_contents lade funktionierts. Aber wenn ich mir die Ausgabe von file_get_contents anzeigen lasse und das Ganze mit phpmyadmin in die DB schreibe nicht. Weiß jemand woran das liegt? -
physiversum schrieb:
Nutzt du eventuell den falschen Datentyp für die Daten, der möglicherweise auch noch zu kurz ist? Für eine binäre Datei würde sich
Wenn ich das Bild mit file_get_contents lade funktionierts. Aber wenn ich mir die Ausgabe von file_get_contents anzeigen lasse und das Ganze mit phpmyadmin in die DB schreibe nicht. Weiß jemand woran das liegt?
anbieten… und natürlich musst du die Daten mitBLOB
codieren, bevor du sie in ein SQL-Statement einfügst.mysql_real_escape_string()
-
Danke, ich habe vergessen mysql_real_escape_string() zu verwenden. Aber ich verwende PDO zum Datenbankzugriff, brauche ich das dann überhaupt? Und wenn ja, wie heißt dort die Funktion?
-
physiversum schrieb:
Wozu muss die Extension extra angegeben werden? Das lässt sich auch anders lösen.
Die Data-URL erstelle ich mit PHP:
function data_url($content, $mime = "image/png") { $base64 = base64_encode($content); return ('data:' . $mime . ';base64,' . $base64); }
(Die Endung .png, gif, jpg kann zusätzlich im String der DB übergeben werden)
Beispiel (ohne DB)
<img> tag:
function imgtag($img){ $file='secretImg/'.$img; // imageordner ? $content=end(explode('.',$file)).';base64,'.base64_encode(file_get_contents($file)); echo '<img src="data:image/'.$content.'" alt="'.$img.'" title="'.$img.'" />'; // ^^ direkte anzeige, oder doch lieber über DB? } imgtag('guck.gif'); // ausgabe gif
<object> tag:
function objecttag($img){ $file='secretImg/'.$img; // imageordner ? $content=end(explode('.',$file)).';base64,'.base64_encode(file_get_contents($file)); echo '<object data="data:image/'.$content.'" title="'.$img.'">Leider kann usw..</object>'; // ^^ direkte anzeige, oder doch lieber über DB? } objecttag('ei.png'); // ausgabe png
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage