Dubbo整合SpringCloud图片显示问题

Tips:公司项目,记录一点经验吧,理解的不对的地方欢迎大神指点

问题:商品图片上传功能(公司没有专门文件服务器)写的保存目录直接是保存在docker容器内部目录下,做的docker外部存储映射到服务器某个文件夹下面(因为怕镜像升级啊什么的 导致图片丢失)。下面粘贴一下

Jenkins配置(外部存储设置 Jenkins构建自动设置)

SpringBoot设置docker容器新增文件夹配置

<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<dockerHost>http://0.0.0.0:2375</dockerHost>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<imageTags>
<imageTag>${project.version}</imageTag>
<imageTag>latest</imageTag>
</imageTags>
<baseImage>frolvlad/alpine-oraclejdk8:slim</baseImage>
<volumes>/product-images</volumes>
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>

这样实际图片上传路径指定/product-images图片上传问题就解决了

问题2:因为图片直接存储在数据库的是相对路径就是比如(/20180909/image.png)实际项目是在docker容器中,图片也是在/product-images 。我返回给前端的文件路径就是这样的 www.域名/Zool/product-images/20180909/image.png 导致找不到图片,在测试服务器上还没发现问题因为测试机有缓存所以导致了这个问题的一个隐藏,今天打正式版导致图片不显示。

思路:项目是SpringBoot 目前我知道的 放到resource目录下 文件直接项目 然后相对路径是能读取到图片的 但是放到docker下,而且也没在resource下,(跟docker没关系)就相当于读机器上某个文件导致的不让读取。

解决办法:

https://域名/Zool/seeImage?imgPath=/product-images" + catalogProductDto.getImages()
@RequestMapping(value = "/seeImage",method = RequestMethod.GET)
public String seeImage(HttpServletRequest request, HttpServletResponse response,
@RequestParam(value = "imgPath") String imgPath ) {
try {
FileInputStream hFile = new FileInputStream(imgPath);
//得到文件大小
int i = hFile.available();
byte data[] = new byte[i];
//读数据
hFile.read(data);
response.addHeader("Content-Type",getContentType(imgPath));
response.addHeader("Accept-Ranges","bytes");
//得到向客户端输出二进制数据的对象
OutputStream toClient = response.getOutputStreStream();
//输出数据
toClient.write(data);
toClient.flush();
toClient.close();
hFile.close();
return "";
}
catch (Exception ex)
{
ex.printStackTrakTrace();
return "处理失败"+ex.getMessage();
}
}
/**
* 获取后缀
* @return
*/
private String getContentType(String imgPath) {
String resultSuffix = "";
try{
String suffix = imgPath.substring(imgPath.lastIndexOf('.'));
System.out.println("url中的文件扩展名:"+ suffix);
if(".jpg".equals(suffix)){
resultSuffix = "image/jpeg";
}
if(".png".equals(suffix)){
resultSuffix = "image/png";
}
}catch (Exception e){
e.printStackTrakTrace();
return "处理失败" + e.getMessage();;
}
return resultSuffix;
}

逻辑:后台传给前台一个请求路径,前台请求调用后台的加载图片方法,图片加载以流的方式返回给前台展示 这个问题解决

Dubbo整合SpringCloud图片显示问题的更多相关文章

  1. 微服务框架Dubbo与Springcloud的区别

    微服务框架Dubbo与Springcloud的区别 微服务主要的优势如下: 1.降低复杂度 将原来偶合在一起的复杂业务拆分为单个服务,规避了原本复杂度无止境的积累.每一个微服务专注于单一功能,并通过定 ...

  2. 商城06——solr索引库搭建&solr搜索功能实现&图片显示问题解决

    1.   课程计划 1.搜索工程的搭建 2.linux下solr服务的搭建 3.Solrj使用测试 4.把数据库中的数据导入索引库 5.搜索功能的实现 2.   搜索工程搭建 要实现搜索功能,需要搭建 ...

  3. SpringBoot与Dubbo整合下篇

    (1)pom.xml引入相关依赖jar包,如下: <dependency> <groupId>com.alibaba</groupId> <artifactI ...

  4. springboot与dubbo整合入门(三种方式)

    Springboot与Dubbo整合三种方式详解 整合环境: jdk:8.0 dubbo:2.6.2 springboot:2.1.5 项目结构: 1.搭建项目环境: (1)创建父项目与三个子项目,创 ...

  5. 4.C#WinForm基础图片(显示和隐藏)

    要求: 软件上有一张图片,默认是隐藏的.用户在文本框中输入身份证号(131226198105223452),点击按钮,如果年龄大于18岁,则显示图片. 知识点: 取当前年份,Date Time Now ...

  6. jQuery css3鼠标悬停图片显示遮罩层动画特效

    jQuery css3鼠标悬停图片显示遮罩层动画特效 效果体验:http://hovertree.com/texiao/jquery/39/ 效果图: 源码下载:http://hovertree.co ...

  7. Latex图片显示问题(1)

    用latex编译后,若用dvipdf生成pdf文件,则其中有个eps图的左侧会显示不完全:若是用dvips--pspdf生成pdf文件,图像显示没问题. 这种情况的问题出在,加载 graphicx 宏 ...

  8. WPF 图片显示中的保留字符问题

    在WPF中显示一张图片,本是一件再简单不过的事情.一张图片,一行XAML代码即可. 但是前段时间遇到了一件奇怪的事: 开发机上运行正常的程序,在某些客户机器上却显示不了图片,而且除了这个问题,其它运行 ...

  9. JS控制图片显示的大小(图片等比例缩放)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

随机推荐

  1. 大聊Python----迭代器

    迭代器 我们已经知道,可以直接作用于for循环的数据类型有以下几种: 一类是集合数据类型,如list.tuple.dict.set.str等: 一类是generator,包括生成器和带yield的ge ...

  2. 数据类型的判断 --Object.prototype.toString.call(obj)精准检测对象类型

    数据类型的判断 typeof typeof返回一个表示数据类型的字符串,返回结果包括:number.boolean.string.symbol.object.undefined.function等7种 ...

  3. Installation Guide for Appium 1.6.3

    A.) System Requirements : - Require node 4 or above Xcode 8 iOS 10 B.) Open terminal and type follow ...

  4. 36 - 网络编程-TCP编程

    目录 1 概述 2 TCP/IP协议基础 3 TCP编程 3.1 通信流程 3.2 构建服务端 3.3 构建客户端 3.4 常用方法 3.4.1 makefile方法 3.5 socket交互 3.4 ...

  5. uWSGI+Nginx+Flask在Linux下的部署

    搞了一天多,终于搞通了uWSGI的部署原理,下面总结一下遇到的一些坑,希望给读者能够少走弯路.        简单来说,uWSGI是一个web服务器,Nginx进行反向代理的其实跟这些服务器可以说没有 ...

  6. php PDO判断连接是否可用的方法

    转载自:傲雪星枫  原文地址: http://blog.csdn.net/fdipzone/article/details/53117541 mysql_ping() 检查到服务器的连接是否正常.如果 ...

  7. supervisor 的使用

    1.通过yum安装 supervisor: 2.supervisorctl 查看状态: 3.supervisor.d 下查看配置文件,修改命令和日志目录 4.tail -f /var/log/supe ...

  8. HDU 3001 Travelling(状态压缩DP+三进制)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3001 题目大意:有n个城市,m条路,每条路都有一定的花费,可以从任意城市出发,每个城市不能经过两次以上 ...

  9. ZOJ 1610 Count the Colors(区间染色)

    题目大意:多组数据,每组给一个n(1=<n<=8000),下面有n行,每行有l,r,color(1=<color<=8000),表示将l~r颜色变为color,最后求各种颜色( ...

  10. 使用qt+visa实现程控

    曾经在如何使用VS2010调用visa进行程控中使用vs2010+visa 实现了程控最简单的Demo,现实现Qt实现visa的Demo ===== 本人诚接各种程控开发项目 ===== 软件环境 系 ...