springboot部署的时候一般打成jar包,那么在想象一下图片下载,并展示的情况。下载的图片必须要服务器中间件才可以通过url访问,那么tomcat被内嵌到jar包内,无法进行展示,那么有两种方法,第一种将图片转换成流的形式,第二种是官方推荐的。第一种不做赘述,这里看一下官方推荐做法如下。
js中通过后台传过来的文件url地址,将之作为参数访问获取图片地址。
var host = location.host;
var uurl =[[${picUrl}]];
var tp = [[${tp}]];
if(tp == 1){
var xmlhttp;
xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET","http://"+host+"/updateImgss/"+uurl,true);
xmlhttp.responseType = "blob";
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState==4){
if (xmlhttp.status == 200) {
var blob = this.response;
var img = document.createElement("img");
img.style.width=60+"px";
img.style.height=60+"px";
img.onload = function(e) {
window.URL.revokeObjectURL(img.src);
};
img.src = window.URL.createObjectURL(blob);
$("#iii").append(img);
}
}
}
xmlhttp.send();
controller如下
@Autowired
public LoginController(ResourceLoader resourceLoader) {
this.resourceLoader = resourceLoader;
}
@ResponseBody
@RequestMapping(method = RequestMethod.GET, value = "/updateImgss/{filename:.+}")
public ResponseEntity<?> getFile(@PathVariable String filename ) {
try {
String a = Paths.get(ROOT, filename).toString();
Resource r = resourceLoader.getResource("file:"+a);
return ResponseEntity.ok(resourceLoader.getResource("file:" + Paths.get(ROOT, filename).toString()));
} catch (Exception e) {
return ResponseEntity.notFound().build();
}
}
网友评论