参考:java实现gif动态验证码简单示例项目
文件处理
/** * 根据url下载图片,前端可以通过该链接显示图片 * * @param response HttpServletResponse * @param url 图片的全路径 */ public static void showPictureByUrl(HttpServletResponse response, String url) { //设置响应格式 response.setContentType("image/jpeg"); try (// 把原始的字节输入流包装成高级的缓冲字节输入流 // 输入流,通过输入流读取文件内容 InputStream bis = new BufferedInputStream(new FileInputStream(new File(url))); // 把原始的字节输出流包装成高级的缓冲字节输出流 //输出流,通过输出流将文件写回浏览器,在浏览器展示图片了 OutputStream bos = new BufferedOutputStream(response.getOutputStream()); ) { // 定义一个字节数组转移数据 byte[] buffer = new byte[1024]; int len;//记录每次读取的字节数 while ((len = bis.read(buffer)) != -1) { bos.write(buffer, 0, len); //读多少,输出多少 } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
api接口
/** * 根据用户id获取avatar头像 * * @param id * @return */ @GetMapping("/avatar/{id}") public void getAvatarId(HttpServletResponse response, @PathVariable Long id) { Users users = usersService.getById(id); if (users != null) { String avatar = users.getAvatar(); if (StringUtils.isNotEmpty(avatar)) { TjFileUtils.showPictureByUrl(response, avatar); } } //没有的可以设置一个默认图片 }