zoukankan      html  css  js  c++  java
  • 浏览器异步加载服务器端的图片

    1:使用base64访问图片

    需求:浏览器中的<img>标签动态更换来自服务器端的图片。

    适用场景:不能通过url直接获取到图片的时候。

    java后台service访问服务器端本地资源,生成二进制数据,转成base64编码:

    BASE64Encoder encoder = new sun.misc.BASE64Encoder(); 
    File file = new File(fileurl);  
    FileInputStream fips = new FileInputStream(file);  
    ByteArrayOutputStream bops = new ByteArrayOutputStream();  
    int data = -1;  
    try {  
        while((data = inStream.read()) != -1){  
            bops.write(data);  
        }
    } catch(Exception e){  
        return null;  
    } 
    byte[] btImg = bops.toByteArray();
    return encoder.encodeBuffer(btImg).trim();

    前台js接收上面来自服务器后台的base64编码,设置为img标签的src:

    //可以使用ajax接收来自服务器端的base64编码
    $("img").attr("src", "data:image/jpeg;base64," + 来自服务器的base64编码);

    2:设置tomcat虚拟路径访问图片

    原因:由于web项目的html前台需要通过img标签使用url加载图片资源,而通常只能访问项目相对路径下的资源,所以要通过tomcat映射虚拟路径来访问别的磁盘中的资源。

    在tomcate安装目录下:confCatalinalocalhost中创建一个xml文件(file.xml)。注意:file.xml的名称要与下面的path=""值相同。

    <?xml version='1.0' encoding='utf-8'?>
    <Context crossContext="true" docBase="C:/xxx" path="file" reloadable="true">
    </Context>

    重启tomcat;
    访问虚拟目录 http://localhost:8080/file      

  • 相关阅读:
    【开发者笔记】C#连接mysql问题记录
    【开发者笔记】揣摩Spring-ioc初探,ioc是不是单例?
    【开发者笔记】c# 调用java代码
    【数据库乱码】记录一下数据库乱码问题
    字符函数
    单行函数和多行函数
    rownum和rowid伪列
    排序子句
    单引号的转义
    逻辑运算符
  • 原文地址:https://www.cnblogs.com/chenhao1990/p/4628957.html
Copyright © 2011-2022 走看看