【发布时间】:2018-11-16 17:20:41
【问题描述】:
我有 Blob,它存储在 db 中,我使用 java 服务器从数据库中获取它,如下所示:
Entity.java
@Column(name = "img")
private Blob img;
public Blob getImg() {
return img;
}
public void setImg(Blob img) {
this.img = img;
}
Repository.java
@Transactional
@Query(value = "SELECT img FROM articles WHERE category = ?", nativeQuery = true)
//Blob findP(String category);
Blob findPic(String category);
Controller.java
@RequestMapping(value="/Pic_test")
@ResponseBody
public Blob getPics() throws SQLException, IOException {
return remindRepository.findPic("Java");
}
然后我用 Javascript 接收它来成像它:
function toDataURL(url, callback) {
var xhr = new XMLHttpRequest();
xhr.onload = function() {
var reader = new FileReader();
reader.onloadend = function() {
callback(reader.result);
}
reader.readAsDataURL(xhr.response);
};
xhr.open('GET', url);
xhr.responseType = 'blob';
xhr.send();
}
toDataURL('http://localhost:8080/articles/Pic_test', function(dataUrl) {
var display = document.getElementById('display');
var url = window.URL.createObjectURL(new Blob([dataUrl]));
var img = new Image();
img.src = url;
document.getElementById("demo").innerHTML = img.src;
})
但是,如果我在 java 代码中调用我的“img”Blob,我在服务器中会出现错误,但如果我将其命名为 byte[],我的图片就不会显示出来。
【问题讨论】:
-
在使用 byte[] 时检查服务器响应的内容类型,是浏览器理解的内容
标签: javascript java blob