Dubbo整合SpringCloud图片显示问题
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图片显示问题的更多相关文章
- 微服务框架Dubbo与Springcloud的区别
微服务框架Dubbo与Springcloud的区别 微服务主要的优势如下: 1.降低复杂度 将原来偶合在一起的复杂业务拆分为单个服务,规避了原本复杂度无止境的积累.每一个微服务专注于单一功能,并通过定 ...
- 商城06——solr索引库搭建&solr搜索功能实现&图片显示问题解决
1. 课程计划 1.搜索工程的搭建 2.linux下solr服务的搭建 3.Solrj使用测试 4.把数据库中的数据导入索引库 5.搜索功能的实现 2. 搜索工程搭建 要实现搜索功能,需要搭建 ...
- SpringBoot与Dubbo整合下篇
(1)pom.xml引入相关依赖jar包,如下: <dependency> <groupId>com.alibaba</groupId> <artifactI ...
- springboot与dubbo整合入门(三种方式)
Springboot与Dubbo整合三种方式详解 整合环境: jdk:8.0 dubbo:2.6.2 springboot:2.1.5 项目结构: 1.搭建项目环境: (1)创建父项目与三个子项目,创 ...
- 4.C#WinForm基础图片(显示和隐藏)
要求: 软件上有一张图片,默认是隐藏的.用户在文本框中输入身份证号(131226198105223452),点击按钮,如果年龄大于18岁,则显示图片. 知识点: 取当前年份,Date Time Now ...
- jQuery css3鼠标悬停图片显示遮罩层动画特效
jQuery css3鼠标悬停图片显示遮罩层动画特效 效果体验:http://hovertree.com/texiao/jquery/39/ 效果图: 源码下载:http://hovertree.co ...
- Latex图片显示问题(1)
用latex编译后,若用dvipdf生成pdf文件,则其中有个eps图的左侧会显示不完全:若是用dvips--pspdf生成pdf文件,图像显示没问题. 这种情况的问题出在,加载 graphicx 宏 ...
- WPF 图片显示中的保留字符问题
在WPF中显示一张图片,本是一件再简单不过的事情.一张图片,一行XAML代码即可. 但是前段时间遇到了一件奇怪的事: 开发机上运行正常的程序,在某些客户机器上却显示不了图片,而且除了这个问题,其它运行 ...
- JS控制图片显示的大小(图片等比例缩放)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
随机推荐
- HDU 1045 Fire Net (深搜)
题目链接 Problem DescriptionSuppose that we have a square city with straight streets. A map of a city is ...
- LintCode之硬币排成线
输入的n可以分为两种情况: 1. 如果n是3的倍数的话,不论A怎么拿B都可以拿(3-A拿的个数)来使其保持是3的倍数,他就一定能拿到最后一块,所以n是3的倍数的话B必胜 2. 如果n不是3的倍数的话, ...
- 【文件上传】jquery之ajaxfileupload异步上传插件
来自:http://www.blogjava.net/sxyx2008/archive/2010/11/02/336826.html 由于项目需求,在处理文件上传时需要使用到文件的异步上传.这里使用J ...
- VC进度条的使用
m_progress->GetPos(); //获取进度条的当前位置 m_progress->GetRange(int min,int max); //获取进度条控件的范围的下限和上限 m ...
- Tomcat 调优及 JVM 参数优化
Tomcat 本身与 JVM 优化 Tomcat:调整Server.xml JVM:bat启动服务方式的话修改catalina.bat 服务式启动的话参考:http://www.cnblogs.com ...
- 初窥ThinkPHP
MVC全称(Model View Controller) Model:模型(可以理解位数据库操作模型) View:视图(视图显示) Controller:(控制器) 简单的说框架就是一个类的集合.集合 ...
- [002] delete_duplication_of_linked_list
[Description] Given a unsort linked list, delete all the duplication from them, no temporary space p ...
- bash: composer: command not found
下载composer到本地:curl -sS https://getcomposer.org/installer | php 移动至系统服务:sudo mv composer.phar /usr/bi ...
- LightOJ 1410 Consistent Verdicts(找规律)
题目链接:https://vjudge.net/contest/28079#problem/Q 题目大意:题目描述很长很吓人,大概的意思就是有n个坐标代表n个人的位置,每个人听力都是一样的,每人发出一 ...
- 720P、1080P、4K是什么意思?
什么是像素? 中文全称为图像元素.像素仅仅只是分辨率的尺寸单位,而不是画质. 从定义上来看,像素是指基本原色素及其灰度的基本编码. 像素是构成数码影像的基本单元,通常以像素每英寸PPI(pixels ...