kostenloser Webspace werbefrei: lima-city


"Image corrupt or truncated" bei Data-url

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    p*********m

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Andere Lösung: ja, du speicherst die Dateien (Bilder) in einem Ordner und merkst dir in der DB nur den Pfad auf die entsprechende Datei.

    Base64: woher bekommst du die Variable
    $content
    ? Stimmt der Inhalt oder ist der auch schon falsch?
  4. 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
  5. Autor dieses Themas

    p*********m

    chatter schrieb:
    Warum so umständlich?

    Später sollen auch andere Dinge als Bilder angezeigt werden.
    hackyourlife schrieb:
    Base64: woher bekommst du die Variable
    $content
    ? Stimmt der Inhalt oder ist der auch schon falsch?

    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?
  6. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    physiversum schrieb:
    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?
    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
    BLOB
    anbieten… und natürlich musst du die Daten mit
    mysql_real_escape_string()
    codieren, bevor du sie in ein SQL-Statement einfügst.
  7. Autor dieses Themas

    p*********m

    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?
  8. m******e

    physiversum schrieb:
    Die Data-URL erstelle ich mit PHP:
    function data_url($content, $mime = "image/png") 
    	{  
    	  $base64   = base64_encode($content); 
    	  return ('data:' . $mime . ';base64,' . $base64);
    	}
    Wozu muss die Extension extra angegeben werden? Das lässt sich auch anders lösen.
    (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
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!