解决图片转base64编码后,查询太慢的问题
解决思路:可以把文件id放在base64编码的位置,通过文件下载的方式进行字符串拼接,在img的src属性直接展示,会去调用下载接口,直接展示图片。(最终效果会是文字内容很快显示,图片会之后挨个显示):
还想再加快速度,可以使用redis
public String getTbFileInmage(@RequestParam("ufId") String tbWjFile, HttpServletResponse response) throws IOException {
if (redisTemplate.opsForValue().get(redisPrefix + tbWjFile) == null ? true : false) {
List<TbAppFiles> list = allStaticPageService.selectTbAppFilesList(tbWjFile);
if (list != null && list.size() != 0) {
//设置文件路径
response.setContentType("application/force-download");// 设置强制下载不打开
response.addHeader("Content-Disposition", "attachment;fileName=" + list.get(0).getFilename());// 设置文件名
try {
String ufBase64 = list.get(0).getFilecontent();
OutputStream os = response.getOutputStream();
byte[] decode = Base64.getMimeDecoder().decode(ufBase64);
os.write(decode);
redisTemplate.opsForValue().set(redisPrefix + tbWjFile, ufBase64);
} catch (Exception e) {
e.printStackTrace();
}
}
}else {
//设置文件路径
response.setContentType("application/force-download");// 设置强制下载不打开
response.addHeader("Content-Disposition", "attachment;fileName=" + tbWjFile);// 设置文件名
String ufBase64 = (String) redisTemplate.opsForValue().get(redisPrefix + tbWjFile);
OutputStream os = response.getOutputStream();
byte[] decode = Base64.getMimeDecoder().decode(ufBase64);
os.write(decode);
}
return "下载失败";
}