浏览器异步加载服务器端的图片

1:使用base64访问图片

需求:浏览器中的<img>标签动态更换来自服务器端的图片。

适用场景:不能通过url直接获取到图片的时候。

java后台service访问服务器端本地资源,生成二进制数据,转成base64编码:

BASE64Encoder encoder = new sun.misc.BASE64Encoder(); 
File file = new File(fileurl);  
FileInputStream fips = new FileInputStream(file);  
ByteArrayOutputStream bops = new ByteArrayOutputStream();  
int data = -1;  
try {  
    while((data = inStream.read()) != -1){  
        bops.write(data);  
    }
} catch(Exception e){  
    return null;  
} 
byte[] btImg = bops.toByteArray();
return encoder.encodeBuffer(btImg).trim();

前台js接收上面来自服务器后台的base64编码,设置为img标签的src:

//可以使用ajax接收来自服务器端的base64编码
$("img").attr("src", "data:image/jpeg;base64," + 来自服务器的base64编码);

2:设置tomcat虚拟路径访问图片

原因:由于web项目的html前台需要通过img标签使用url加载图片资源,而通常只能访问项目相对路径下的资源,所以要通过tomcat映射虚拟路径来访问别的磁盘中的资源。

在tomcate安装目录下:confCatalinalocalhost中创建一个xml文件(file.xml)。注意:file.xml的名称要与下面的path=""值相同。

<?xml version='1.0' encoding='utf-8'?>
<Context crossContext="true" docBase="C:/xxx" path="file" reloadable="true">
</Context>

重启tomcat;
访问虚拟目录 http://localhost:8080/file      

原文地址:https://www.cnblogs.com/chenhao1990/p/4628957.html