参考:java实现gif动态验证码简单示例项目

文件处理

  1. /**
  2. * 根据url下载图片,前端可以通过该链接显示图片
  3. *
  4. * @param response HttpServletResponse
  5. * @param url 图片的全路径
  6. */
  7. public static void showPictureByUrl(HttpServletResponse response, String url) {
  8. //设置响应格式
  9. response.setContentType("image/jpeg");
  10. try (// 把原始的字节输入流包装成高级的缓冲字节输入流
  11. // 输入流,通过输入流读取文件内容
  12. InputStream bis = new BufferedInputStream(new FileInputStream(new File(url)));
  13. // 把原始的字节输出流包装成高级的缓冲字节输出流
  14. //输出流,通过输出流将文件写回浏览器,在浏览器展示图片了
  15. OutputStream bos = new BufferedOutputStream(response.getOutputStream());
  16. ) { // 定义一个字节数组转移数据
  17. byte[] buffer = new byte[1024];
  18. int len;//记录每次读取的字节数
  19. while ((len = bis.read(buffer)) != -1) {
  20. bos.write(buffer, 0, len); //读多少,输出多少
  21. }
  22. } catch (FileNotFoundException e) {
  23. e.printStackTrace();
  24. } catch (IOException e) {
  25. e.printStackTrace();
  26. }
  27. }

api接口

  1. /**
  2. * 根据用户id获取avatar头像
  3. *
  4. * @param id
  5. * @return
  6. */
  7. @GetMapping("/avatar/{id}")
  8. public void getAvatarId(HttpServletResponse response, @PathVariable Long id) {
  9. Users users = usersService.getById(id);
  10. if (users != null) {
  11. String avatar = users.getAvatar();
  12. if (StringUtils.isNotEmpty(avatar)) {
  13. TjFileUtils.showPictureByUrl(response, avatar);
  14. }
  15. }
  16. //没有的可以设置一个默认图片
  17. }