java - error displaying image in IE10 -


server:

@requestmapping(value = "/url/{size}/{id}", method = requestmethod.get) public void getportfoliofile(httpservletresponse response,     @pathvariable("id") int id,     @pathvariable("size") int size) {     file img = provider.getimage(id, size);      if (img != null) {         try {             filecopyutils.copy(filecopyutils.copytobytearray(img), response.getoutputstream());             string mimetype = img.tourl().openconnection().getcontenttype();             response.setcontenttype(mimetype);             response.setcontentlength((int) img.length());             response.setheader("content-transfer-encoding", "binary");             response.setheader("content-type", "binary/octet-stream");             response.setheader("content-disposition", "attachment; filename=\"" + img.getname() + "\"");         } catch (ioexception e) {             e.printstacktrace(system.err);         }     } } 

html:

<img src="/url/2/${id}" onerror="$('#c').empty();" /> 

the problem ie10 don't display image. response body contains image, headers 200 ok. whan can be?

check in:

  • chrome v43.0.2357.132
  • firefox developer edition v40
  • ie v10

you need set headers before write content, else ignored.

string mimetype = img.tourl().openconnection().getcontenttype(); response.setcontenttype(mimetype); response.setcontentlength((int) img.length()); response.setheader("content-transfer-encoding", "binary"); response.setheader("content-type", "binary/octet-stream"); response.setheader("content-disposition", "attachment;          filecopyutils.copy(filecopyutils.copytobytearray(img), response.getoutputstream()); 

edit: content-type "binary/octet-stream" not make sense. here expect "image/gif" or other appropriate content type. eliminate content-disposition header.


Comments