
# V5.0.002版本升级关于第三方包的说明
**
升级前注意事项**
因苍穹&星瀚在V4.0.012版本对第三方包进行了全面升级,所以:
若从V4.0.012之前版本升级到V5.0.002版本,请先阅读:[V4.0.012版本升级说明](https://vip.kingdee.com/article/252025899686989824?productLineId=29&isKnowledge=2)
若从 V4.0.012版本及之后版本升级到V5.0.002版本,则直接阅读本篇说明。
本次苍穹&星瀚升级涉及到图片服务器安全整改对二开影响较大,请关注!
## 一、 图片服务器安全整改
由于历史原因,以前版本图片服务器需要独立配置外网地址(即mc中的fileserver属性),并允许任意访问,部分图片相关的场景依赖了该特性。由于安全的要求,苍穹和星瀚在V5.0.002版本进行了整改,图片相关的访问只能通过苍穹本身的url(如https://域名/ierp//attachment/downloadImage/**)进行访问。
所以,运维上后续会将图片服务器的外网地址以及nginx相关配置删除,彻底解决安全隐患。
此次变动,有可能会对二开的代码产生影响,如果二开代码原来使用图片外网地址进行相应开发,请参考如下说明进行整改。
### 直连模式直接访问图片服务器将无法访问图片
由于历史原因,图片的访问方式存在两种模式,假设图片在图片服务器的相对路径为:/a/b/c.webp,则会有以下两种图片url形式。
- **直连模式:** 通过图片服务器IP直接访问图片,形如:<http://imageServerIp:8100/fileserver/a/b/c.webp>,这种访问图片方式称之为图片服务器直连模式。
- **苍穹访问模式**:通过苍穹对外暴露的下载URL访问图片,形如:http://苍穹域名/attachment/downloadImage/a/b/c.webp,这种访问图片的方式称之为苍穹访问模式,苍穹先验证用户访问权限,然后访问图片服务器,获取图片资源返回。
直连模式未验证用户权限,不符合安全要求。因此,需要将图片访问方式统一修改为苍穹访问模式。
**需要整改的典型场景**
**1.获取图片完整url**
错误获取方式
```java
getProperty("imageServer.url")、getProperty("image.fileserver")、getProperty("fileserver")
通过这三种方式取到图片服务器域名或机器ip,手工拼接成一个完整路径。
```
需整改为调用 UrlService接口获取
```java
String imageFullUrl = UrlService.getImageFullUrl(String 图片相对路径);
```
**2.使用http方式访问图片服务**
比如用HttpClient,或者java URL方式直接访问图片服务,进行下载,上传,删除,获取文件流等操作,由于新版本图片服务器外网地址不存在以及图片服务器不允许匿名访问,Http方式直接访问将会失效。应该改为使用平台提供的FileService接口。
例如,使用HttpClient:
```java
// 使用 httpClient 直接调用图片服务器
String url = imageServerUrl + imageUrl; // 图片服务器地址 + 图片的相对路径
HttpClient client = HttpClients.createDefault();
HttpGet get = new HttpGet(url);
HttpResponse response = client.execute(get);
InputStream imageInputStream = response.getEntity().getContent();
```
或者,使用URL获取InputStream:
```java
InputStream in = new URL(imageFullUrl).openConnection().getInputStream()
```
修改为使用图片服务的FileService接口:
```java
// 以图片服务为例
String url = "xxx/xxx/xxx.webp"; // 图片的相对路径
FileService imageService = FileServiceFactory.getImageFileService();
InputStream imageInputStream = imageService.getInputStream(url);
```
除了上述示例获取InputStream,其他场景修改方式类似。 FileService接口提供了download, batchDownload, upload,remove,getInputStream等接口。
**3.富文本控件历史存储图片地址处理**
富文本控件本身不存储内容, 正常情况下开发会将一段自行持久化的html内容发送给富文本控件显示或编辑,富文本控件支持图片上传,历史图片上传生成的链接采用的直连模式不符合安全要求,需要对历史数据进行修复。详细修复方法请查看:<https://vip.kingdee.com/article/322383129006328320>
**4.其他注意事项:**
- UrlService.getImageFullUrl得到的完整url,如果是直接保存到数据库中,需整改,数据库只能存储图片相对路径。
- UrlService.getImageFullUrl得到的完整url,传递给第三方系统,供其使用的,需要整改,第三方访问图片url时,需要携带access_token参数。
V5.0.002版本升级说明.docx