关于图片不能外链的解决方法

在SpringMVC项目中,针对图片外链无法正常显示的问题,可以通过在页面使用特定的src路径结合Controller处理来实现。在页面代码中,设置img标签的src为`${webPath}/imgPro.shtml?imgUrl=${tm.cover}`,然后在对应的Java Controller类中,定义`@RequestMapping("/imgPro")`的方法来处理请求,返回图片内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringMVC项目,imgUrl是图片地址,通过以下方法,可以显示图片

页面代码:

<img src="${webPath}/imgPro.shtml?imgUrl=${tm.cover}" />

java Controller类:

@RequestMapping("/imgPro")

public String imgPro(HttpServletRequest request,HttpServletResponse response,String imgUrl)throws IOException {

String newImgUrlMd5 = new String(DigestUtils.md5Hex(imgUrl));
byte[] data =  (byte[]) memcachedClientService.get(newImgUrlMd5);
if(data ==null){
//new一个URL对象
URL url = new URL(imgUrl);
//打开链接
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
//设置请求方式为"GET"
conn.setRequestMethod("GET");
//超时响应时间为5秒
conn.setConnectTimeout(5 * 1000);
//通过输入流获取图片数据
InputStream inStream = conn.getInputStream();
//得到图片的二进制数据,以二进制封装得到数据,具有通用性
try {
data = readInputStream(inStream);
memcachedClientService.set(newImgUrlMd5, data);
} catch (Exception e) {
e.printStackTrace();
}
}
ByteArrayInputStream is = new ByteArrayInputStream(data);
BufferedImage  bi1 = ImageIO.read(is);

// 禁止图像缓存。
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
response.setContentType("image/jpeg");
// 将图像输出到Servlet输出流中。
ServletOutputStream out = response.getOutputStream();
ImageIO.write(bi1, "jpeg", out);
return null;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值