代码拉取完成,页面将自动刷新
@ApiOperation(value = "获取验证码", produces = "image/gif")
@GetMapping(value = "/captcha", produces = "image/gif")
public void captcha(HttpServletRequest request, HttpServletResponse response) throws Exception {
// 设置请求头为输出图片类型
response.setContentType("image/gif");
response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
response.setHeader("Cache-Control", "post-check=0, pre-check=0");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);
Captcha captcha = (Captcha) captchaCodeService.generateCaptcha();
logger.info("生成了验证码:" + captcha.text());
// 验证码存入session
request.getSession()
.setAttribute("captcha",
captcha.text()
.toLowerCase());
captcha.out(response.getOutputStream());
}
这个问题主要是因为在OpenAPI3的规范里面没有针对流的请求的判断,也就是虽然你代码里面指定了produces,但是最终springfox生成的OpenAPI3规范里面没有这方面的定义,导致Knife4j发送请求的时候,没有办法指定该接口是blob请求,接收到的对象也就无法处理转换成前端的Blob对象。这个是原因
和这个issue的情况是类似的#I374SP:文件下载始终是Knife4j.txt
第二个从你的代码中来看,现在的注解还是在用2的注解,例如ApiOperation这些注解都是OpenAPI2的规范,所以你可以考虑降级使用2.0.8版本,目前springfox3也不太稳定,毕竟才发布一个版本,2相对稳定一些,这个我在文档中也有说明,参考版本说明
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
谢谢!
登录 后才可以发表评论