参考: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);
}
}
//没有的可以设置一个默认图片
}