最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - put jpg data from xmlhttprequest into <img > tag - Stack Overflow

programmeradmin0浏览0评论

here is some part of my code

xmlhttp.open("GET", theUrl, true);
document.imglive.innerHTML = '<img src="data:image/jpeg,' + xmlhttp.responseText + '"/>';

that don´t seem to work. i also tried

document.imglive.src= xmlhttp.responseText;

that neither worked

I checked some of the asked questions here but none of the answers where helping at this porblem.

here is some part of my code

xmlhttp.open("GET", theUrl, true);
document.imglive.innerHTML = '<img src="data:image/jpeg,' + xmlhttp.responseText + '"/>';

that don´t seem to work. i also tried

document.imglive.src= xmlhttp.responseText;

that neither worked

I checked some of the asked questions here but none of the answers where helping at this porblem.

Share Improve this question asked May 21, 2012 at 14:42 GobliinsGobliins 4,04618 gold badges71 silver badges130 bronze badges 8
  • what does responseText contain? – Joseph Commented May 21, 2012 at 14:44
  • 2 Why aren't you just doing document.imglive.src='/new/src.jpg';? – paulslater19 Commented May 21, 2012 at 14:45
  • @Joseph some jpeg data like �����JFIF���������...�*C���NC�]���,O��QE� – Gobliins Commented May 21, 2012 at 14:48
  • Aside from the reason, the document.imglive.src = "data:image/jpeg,..." should be in the onreadystatechange-handler. – Andreas Commented May 21, 2012 at 14:49
  • @paulslater i am reading also the header data out of the xmlhttpresponse object if i would make a second request the data may have changed. i need header data and content from one request. – Gobliins Commented May 21, 2012 at 14:50
 |  Show 3 more ments

2 Answers 2

Reset to default 3

Use base64 for these things. In modern browsers there's this btoa native function that may help you:

document.imglive.innerHTML = "<img src='data:image/jpeg;base64," + btoa(xmlhttp.responseText) + "'/>";

For other browsers there are simple emulated implementations, just check them out.

P.S.: don't pollute the document object, use a separate variable or a namespace.

If you are happy with IE10+, you can use xhr.responseType = 'blob' in conjunction with window.URL.createObjectURL() (to get free support for getting the correct mime type).

xhr.responseType = 'blob';
xhr.onload = function(response) {
  var url = window.URL.createObjectURL(response);
  document.imglive.src = url; // from your example code
}
xhr.open("GET", theUrl, true);
发布评论

评论列表(0)

  1. 暂无评论