2011-11-21 169 views
1

所有
我得到的图像(使用XHR)的二进制数据转换,让我们命名这个二进制数据作为数据
我不知道如何将数据转换成真正的img标签
起初:
我尝试使用FileRederreadAsBinaryString,但也不会造成reader.onloadend工作,将不会触发如何IMG的binarydata到的img标签

是否有其他的方法来完成这件事?
在此先感谢〜

$.ajax({ 
       url:src, 
       type:"GET", 
       success:function(data){ 
    var reader=new FileReader() 
    reader.onload=function(e){ 

     var data=e.target.result 
     console.log(data) 

    } 
    reader.readAsDataURL(data) 

...

+0

请尝试'reader.onload'(对我很好)。 – ComFreek

+0

将其转换为Base64,然后直接将它连接到img src - data:image/jpg; base64,DATA –

+0

@ ComFreek,我试过了,仍然一样 – Lanston

回答

0

你或许应该叫readAsDataURL,并使用load事件来代替。

var reader = new FileReader(); 

reader.onload = function (e) { 
    var img = new Image(); 
    img.src = e.target.result; 
}; 
reader.readAsDataURL(file); 
+0

我在第一次尝试开始时,问题在于,* reader.onload *没有激活 – Lanston

+0

您可以发布您的代码吗? –

0

Base64编码你的二进制数据。关于如何在JavaScript中对64位二进制数据进行base64,请参见question

然后将base64字符串直接插入到图像标记中。例如,如果二进制数据是JPG图像,则可以这样做(理论上):

$.ajax({ 
    url:src, 
    type:"GET", 
    success:function(binaryData) { 

    //toBase64 is a made up function, see above 
    var base64Data = toBase64(binaryData); 

    //assuming img is defined outside of here (not in the scope of this question) 
    img.src = "data:image/jpg;base64," + base64Data; 
    } 
}); 
+0

嗨,我试试这个,但是我得到了相同的“base64”,这个“base64”很奇怪,与右边的base64不同 – Lanston