Bir base64 kodlanmış Resmi gösteriliyor / gönderme

0 Cevap php

I need to send a base64 encoded string to a client. Therefore, I'm opening and reading an image file on the server, encode it and send that data along with the image/jpeg content-type to the browser. Example in php:

$image      = $imagedir . 'example.jpg';
$image_file = fopen($image, 'r');
$image_data = fread($image_file, filesize($image));

header("Content-type: image/jpeg");
echo 'data:image/jpeg;base64,' . base64_encode($image_data);

Clientside, ben arıyorum:

var img     = new Image();
img.src     = "http://www.myserver.com/generate.php";
img.onerror = function(){alert('error');}
$(img).appendTo(document.body);

Bu nedense çalışmıyor. onerror her zaman patlar. FireBug izlemek Network task Örneğin, ben doğru başlık bilgilerini ve Aktarılan bayt doğru bir değer alıyorum söylüyor.

(Ben doğrudan komut ararsanız) gibi veri Content-type: text/plain çalıştığını, base64 dize tarayıcıda gösterilen olduğunu gönderin. Kopyalama ve src bir <img> elemanın içine çıktı yapıştırarak beklendiği gibi görüntü gösterir.

Ben burada yanlış ne yapıyorum?

Solution

Teşekkürler Pekka Benim hatam beni işaret için. Sen (siz yapamazsınız!) Gerekmez kodlamak bu yaklaşım bu tür base64 dize olarak ikili görüntü verileri. Base64 kodlama olmadan, sadece çalışır.

0 Cevap