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. HDU 1521 排列组合 (母函数)

    题目链接 Problem Description 有n种物品,并且知道每种物品的数量.要求从中选出m件物品的排列数.例如有两种物品A,B,并且数量都是1,从中选2件物品,则排列有"AB&qu ...

  2. 56、isinstance作用以及应用场景?

    isinstance作用:来判断一个对象是否是一个已知的类型: 其第一个参数(object)为对象,第二个参数为类型名(int...)或类型名的一个列表((int,list,float)是一个列表). ...

  3. zepto.js 实现原理解析

    zepto 是移动端常用的 dom 库,代码轻巧,操作方式类同 jquery.那么 zepto 的核心实现原理是什么呢?

  4. Balanced and stabilized quicksort method

    The improved Quicksort method of the present invention utilizes two pointers initialized at opposite ...

  5. PCA算法和SVD

    如果矩阵对某一个向量或某些向量只发生伸缩变换,不对这些向量产生旋转的效果,那么这些向量就称为这个矩阵的特征向量,伸缩的比例就是特征值.这里可以将特征值为负,特征向量旋转180度,也可看成方向不变,伸缩 ...

  6. 洛谷P1319压缩技术 题解

    题目传送门 这道题是入门难度的题.特别水...QWQ...... #include<bits/stdc++.h> using namespace std; *],top; int main ...

  7. 使用注解配置SQL映射器

    在上一章,我们看到了我们是怎样在映射器Mapper XML配置文件中配置映射语句的.MyBatis也支持使用注解来配置映射语句.当我们使用基于注解的映射器接口时,我们不再需要在XML配置文件中配置了. ...

  8. java 用maven 构建项目时@Override错误的解决办法

    把工程编译时使用JDK1.6以上版本可以解决. eclipse中 Preferences-->Java-->Compiler-->Configure Project Specific ...

  9. Android逆向之旅---反编译利器Apktool和Jadx源码分析以及错误纠正

    Android逆向之旅---反编译利器Apktool和Jadx源码分析以及错误纠正 http://blog.csdn.net/jiangwei0910410003/article/details/51 ...

  10. 【ASP.NET MVC】Ajax提交表单

    下面这段代码主要有几个特点: 1.Ajax提交表单 2.表单中有一个<input type="file"/> 3.当选择完图片后,利用AJAX提交表单,并在执行成功后返 ...