个人笔记--img、文件流

在做具体的二维码生成过程中,使用文件流的方式,在页面接收显示,并且下载,自己的一些小感悟,准确说是小心得

1.在页面显示,第一步仅仅显示

response.setContentType("image/jpeg");//设置相应类型,告诉浏览器输出的内容为图片

response.setHeader("Pragma", "No-cache");//设置响应头信息,告诉浏览器不要缓存此内容
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expire", 0);

这样设置就可以了,一开始的时候是通过form提交参数,返回到页面,发现在页面的左上角显示,感觉不舒服,所以就想如果能在页面的中间显示多好,

第一反应就是通过ajax发送请求,然后在页面的的一个特定的位置显示出二维码。翻阅一些帖子之后,发现ajax无法接受文件流这个格式的返回数据,因此这种方案被否决了。

在研究过程中,由于我们自己的前端框架是themeleaf的,所以在查看文档的过程中发现<img>标签中的alt属性,和src属性,自己对他们了解真的很少

alt:该图片是什么,比如我放了一张郁金香花的图片,但是不认识的人,就不知道是这个是郁金香,所以当我在alt属性中加上alt="郁金香花",别人就知道了,尤其是对一些残疾人来说就太重要了。还有一个比较好的地方就是,当该张图片出现问题的时候,比如没有这个图片,img会在该位置显示文字(alt的内容),不在是以前“破碎的图片”的样式。

src:都知道src是放图片的地址,但我之前理解仅仅是路径下的地址,原来也可以放url,重要的该url能访问到该地址,最好的是可以接受服务器想浏览器返回的图片流。

说到这大家可能已经知道我想说什么了,之前二维码是用图片流的格式返回的,既然ajax不能用,那就用img的src属性来接收既可。

2.生成的二维码如何能保存到用户本地那,方法还是用的同一个方法,也是返回图片流的形式

response.setContentType("image/jpeg");//设置相应类型,告诉浏览器输出的内容为图片

response.setHeader("Content-Disposition", "attachment; filename=erweima.jpg");//该参数告诉浏览器,这是以附件的形式,下载到本地的附件的名称为erweima

然后通过response获得输出流,在页面得到该图片,大功告成。

在实现第二步的时候也遇到了一些问题,就是下载的连接我用成了ajax提交,发现参数是接受到了,就是没有下载,后来发现用form post提交,这个问题就解决了。


你可能感兴趣的:(个人笔记--img、文件流)