用Ajax请求服务器的图片,并显示在浏览器中(转)
前言
一直在数据库里面存的都是图片在服务器的地址,然后再到浏览器中显示,但是发现两个问题
第一:为了安全起见,js是无法读取本地的图片的,不然你写一个js,岂不是可以获取任何人电脑里面的文件了。
第二:图片存在的是在服务器的硬盘上面,而不是在客户的硬盘里面,所以也是取不到的
后来在网上找方法,找的方法,都是各种转换二进制到xml中,的各种高大上的答案,然后本人又实在太懒了,就自己想了一个方法,就是利用BufferedImage这个类。
开始
首先说说我的思路,就是把本地的图片,加载到内存中,然后放到BufferedImage这个缓冲流中,然后利用ImageIO.write(),这下大家都估计想得到一种思路了,但是如果说ajax,得到的数据,估计还是啥个乱七八糟的啥吧!没关系,稍后介绍。
工具类
首先建立一个加载图片的工类具,把一个图片的地址当参数存进去,得到这个图片的缓冲流:
/*** 根据图片的地址,返回图片的缓冲流* @param addr* @return*/public static BufferedImage getInputStream(String addr){try {String imgPath = addr; BufferedImage image = ImageIO.read(new FileInputStream(imgPath));return image;} catch (Exception e) {e.printStackTrace();System.out.println();System.out.println("获取图片异常:java.awt.image.BufferedImage");System.out.println("请检查图片路径是否正确,或者该地址是否为一个图片");}return null;}
没错,就是使用ImageIO.read,来加载流对象,然后就是处理类的代码了,这是我用的是springMVC,springMVC这段时间比较火,所以我也好少用struts2了
处理类
/*** 根据图片的地址,来获取图片* @param addr* @param response*/@ResponseBody@RequestMapping("/getImg")public void getImg(@Param("addr")String addr,HttpServletResponse response){BufferedImage img = new BufferedImage(300, 150, BufferedImage.TYPE_INT_RGB);img = ImgUtil.getInputStream(addr);if(img==null){throw new RuntimeException("打印图片异常:com.controller.Business_Ctrl.getImg(String, HttpServletResponse)");}if(img!=null){try {ImageIO.write(img, "JPEG", response.getOutputStream());} catch (IOException e) {e.printStackTrace();System.out.println("打印异常:com.controller.Business_Ctrl.getImg(String, HttpServletResponse)");}}}
很明显,使用ImageIO.read()读到图片时,就用ImageIO.write(),输出图片,输入流就是HttpServletResponse.getOutputStream()
客户端
function setImg(addr){ $("#logo").attr("src","business/getImg?addr="+addr+"");}
如图所示,当需要加载图片的时候,就触发setImg方法,给它一个地址,当然,地址,早已经从后台传到前台了,自然,就算没有地址,稍微变一下,也可以在后台得到地址,然后返回,然后给img标签设置src属性,就可以得到图片了。
转载于:https://www.cnblogs.com/123456p/p/8621381.html
用Ajax请求服务器的图片,并显示在浏览器中(转)相关推荐
- ajax请求在ie和360兼容模式浏览器中数据不能正常返回
ajax get请求在ie和360兼容模式浏览器中数据不能正常返回,但debugger后数据在ie和360兼容模式浏览器可以正常返回的. 在网上查了一下资料. 以下是资料内容: 在使用jQuery的A ...
- 下拉选项框选中之后,通过ajax请求服务器,填充页面其他元素的value值
一.背景 在后台添加产品,有一些东西需要提前在数据库获取,此时,运营显然是不知道该如何操作的,我们需要做的就是方面运营人员经营后台,把需要用到的字段直接查出来,显示在页面上. 如图: 这是需求图 二. ...
- 服务器的图片无法显示,服务器的图片无法显示
服务器的图片无法显示 内容精选 换一换 华为云-FPGA加速云服务器(FACS)-提供FPGA加速服务和FPGA开发使用的工具及环境,方便用户开发和部署FPGA加速业务 来自:产品 零售行业通常根据零 ...
- Jsp显示应用外服务器的图片,jsp显示服务器的绝对路径图片
JavaWeb将图片显示在浏览器中 ②图片名含有中文,通过Servlet将图片输出到浏览器上,使用图片在服务器上的绝对路径showImage.jsp lt;a href="/TestProj ...
- 华为服务器图片无法显示,服务器的图片无法显示
服务器的图片无法显示 内容精选 换一换 用户在使用chrome浏览器浏览Flink Web UI页面时无法显示title.此处以Tasks为例进行分析,用户将鼠标置于Tasks的彩色小方框上,无法显示 ...
- promise的应用和在VUE中使用axios发送AJAX请求服务器
promise 用promise对函数封装: 原来的代码: <!DOCTYPE html> <html> <head><title>vue demo&l ...
- php 响应时间,PHP下解决ajax请求服务器响应时间过长问题
PHP下解决ajax请求服务器响应时间过长的办法:首先在浏览器输入测试网址,找到Networky以及ajax发送的请求:然后找到TTFB的响应时间对应的php文件,并删掉这些代码:最后将数据库loca ...
- ftp服务器上图片文件显示不出来,ftp服务器上图片文件显示
ftp服务器上图片文件显示 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ.exe.在本地主机和Windows云服务器上分别安装 ...
- php 访问服务器上图片不显示,php显示云服务器上图片不显示
php显示云服务器上图片不显示 内容精选 换一换 远程登录Windows弹性云服务器后,修改分辨率设置.不同版本的Windows操作系统,操作略有差异,本节以Windows Server 2016 标 ...
最新文章
- Python-anaconda-Spyder使用matplotlib画图无法显示报错解决:Figures now render in the Plots pane by default. To mak
- 实验02 Linux文件和目录管理
- Thymeleaf一些标签的传字符串/message/消息
- 北斗导航 | RAIM奇偶矢量法理论分析(公式推导:原理图)
- String字符串相等判断
- 排查指南 | 两个案例学会从埋点排查 iOS 离线包
- python输入一个字母_python – Tkinter输入的第一个字母
- 全面了解 Nginx 到底能做什么
- 你缺钱只有一个原因就是你每天做赚钱的动作太少了
- leetcode python3 简单题225. Implement Stack using Queues
- Unity 发布hololens注意事项
- IPv4和IPv6比特转发率和包转发率的关系
- EDA软件_AD14绘制等长线
- 使用ps替换图片颜色为透明色
- Hbase 过滤器详解
- 杂凑算法md5c语言代码,MD5杂凑算法
- linux命令显示文件内容行号|linux将内容以行号显示出来
- 计算机关机界面卡住,Win7关机缓慢,关机后一直卡在正在关机界面
- PaaS平台为什么越来越受欢迎?
- Matlab||EGM2008模型计算GOCE沿轨重力梯度及全球重力梯度分布