前言

一直在数据库里面存的都是图片在服务器的地址,然后再到浏览器中显示,但是发现两个问题

第一:为了安全起见,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请求服务器的图片,并显示在浏览器中(转)相关推荐

  1. ajax请求在ie和360兼容模式浏览器中数据不能正常返回

    ajax get请求在ie和360兼容模式浏览器中数据不能正常返回,但debugger后数据在ie和360兼容模式浏览器可以正常返回的. 在网上查了一下资料. 以下是资料内容: 在使用jQuery的A ...

  2. 下拉选项框选中之后,通过ajax请求服务器,填充页面其他元素的value值

    一.背景 在后台添加产品,有一些东西需要提前在数据库获取,此时,运营显然是不知道该如何操作的,我们需要做的就是方面运营人员经营后台,把需要用到的字段直接查出来,显示在页面上. 如图: 这是需求图 二. ...

  3. 服务器的图片无法显示,服务器的图片无法显示

    服务器的图片无法显示 内容精选 换一换 华为云-FPGA加速云服务器(FACS)-提供FPGA加速服务和FPGA开发使用的工具及环境,方便用户开发和部署FPGA加速业务 来自:产品 零售行业通常根据零 ...

  4. Jsp显示应用外服务器的图片,jsp显示服务器的绝对路径图片

    JavaWeb将图片显示在浏览器中 ②图片名含有中文,通过Servlet将图片输出到浏览器上,使用图片在服务器上的绝对路径showImage.jsp lt;a href="/TestProj ...

  5. 华为服务器图片无法显示,服务器的图片无法显示

    服务器的图片无法显示 内容精选 换一换 用户在使用chrome浏览器浏览Flink Web UI页面时无法显示title.此处以Tasks为例进行分析,用户将鼠标置于Tasks的彩色小方框上,无法显示 ...

  6. promise的应用和在VUE中使用axios发送AJAX请求服务器

    promise 用promise对函数封装: 原来的代码: <!DOCTYPE html> <html> <head><title>vue demo&l ...

  7. php 响应时间,PHP下解决ajax请求服务器响应时间过长问题

    PHP下解决ajax请求服务器响应时间过长的办法:首先在浏览器输入测试网址,找到Networky以及ajax发送的请求:然后找到TTFB的响应时间对应的php文件,并删掉这些代码:最后将数据库loca ...

  8. ftp服务器上图片文件显示不出来,ftp服务器上图片文件显示

    ftp服务器上图片文件显示 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ.exe.在本地主机和Windows云服务器上分别安装 ...

  9. php 访问服务器上图片不显示,php显示云服务器上图片不显示

    php显示云服务器上图片不显示 内容精选 换一换 远程登录Windows弹性云服务器后,修改分辨率设置.不同版本的Windows操作系统,操作略有差异,本节以Windows Server 2016 标 ...

最新文章

  1. Python-anaconda-Spyder使用matplotlib画图无法显示报错解决:Figures now render in the Plots pane by default. To mak
  2. 实验02 Linux文件和目录管理
  3. Thymeleaf一些标签的传字符串/message/消息
  4. 北斗导航 | RAIM奇偶矢量法理论分析(公式推导:原理图)
  5. String字符串相等判断
  6. 排查指南 | 两个案例学会从埋点排查 iOS 离线包
  7. python输入一个字母_python – Tkinter输入的第一个字母
  8. 全面了解 Nginx 到底能做什么
  9. 你缺钱只有一个原因就是你每天做赚钱的动作太少了
  10. leetcode python3 简单题225. Implement Stack using Queues
  11. Unity 发布hololens注意事项
  12. IPv4和IPv6比特转发率和包转发率的关系
  13. EDA软件_AD14绘制等长线
  14. 使用ps替换图片颜色为透明色
  15. Hbase 过滤器详解
  16. 杂凑算法md5c语言代码,MD5杂凑算法
  17. linux命令显示文件内容行号|linux将内容以行号显示出来
  18. 计算机关机界面卡住,Win7关机缓慢,关机后一直卡在正在关机界面
  19. PaaS平台为什么越来越受欢迎?
  20. Matlab||EGM2008模型计算GOCE沿轨重力梯度及全球重力梯度分布

热门文章

  1. 【转】MYSQL入门学习之十:视图的基本操作
  2. JS 伸缩效果代码 (上下伸缩)
  3. GridView标题行换行之我见 (转)
  4. 中文版-He Knows My Name(他知道我的名字)-祂认得我-陈熙(音乐河4)
  5. JQUERY搞的相册导航DEMO教学,总有一款合心意
  6. 转帖:硬盘生产全过程(图)
  7. 【C++】【九】栈的应用
  8. 不畏浮云遮望眼--离散数学和组合数学
  9. GDAL库简介以及在Windows下编译过程
  10. 主角用计算机控制身体,国漫段子手:绝技,用计算机控制挖掘机炒菜