
# 1 V6.0.0及以上版本
## 1.1 简介
### 1.1.1 功能介绍
自定义预览支持通过插件实现自定义的预览服务。
### 1.1.2 应用场景
预览苍穹中的文件时,若需要使用自己实现的预览服务进行预览,可以在文件服务参数中配置自定义预览,实现自己的预览服务。
### 1.1.3 系统路径
【公共设置】 → 【参数配置】 → 【系统参数】 → 【文件服务参数】

### 1.1.4 关键配置说明
#### 1.1.4.1 参数页面配置
在自定义预览文件类型(插件方案)文本框中,填写上支持预览所填写的文件类型。
| **配置名称** | **详细解释** |
| ------------------------------ | ------------------------------------------------------------ |
| 自定义预览文件类型(插件方案) | 需通过文件服务扩展插件,实现文件预览接口,仅支持预览所填写的文件类型(使用英文逗号进行分隔),示例:txt,png |
#### 1.1.4.2 自定义预览的二开方式
苍穹平台默认通过云盘模式预览文件,私有云客户需要准备一台Window Server,安装Office软件并部署转换插件,才能实现云盘模式的文件预览。
为了实现文件预览的灵活性,苍穹提供了文件预览二开的方式,可以对预览实现逻辑进行定制化开发,比如某客户通过对接在线预览服务,实现预览服务的二次开发。
下面将通过“开发流程”和“MC参数配置”两个方面,来介绍文件预览二开流程。
##### 1.1.4.2.1 开发流程
###### Step1 实现基类
实现基类的操作代码如下所示:
```Java
implements kd.bos.fileservice.preview.PreviewService
```
###### Step2 基类初始化
基类初始化的代码如下所示:
```Java
//实例化时会把当前文件服务实例传进来,供进行文件上传下载等操作,需要自己实现赋值
public void init(FileService fileService) {
this.fileService = fileService;
}
```
###### Step3 自定义预览方式的二开实现
自定义预览方式二开要实现“previewWPS”**和**“previewFromCacheWPS”**两个方法,方法介绍如下:
```Java
public Map<String, Object> previewWPS(String fileName, String path, String userAgent, Map<String, String> config) {
//fileName文件名;path文件存储路径;config系统配置页面中配置的参数; 该方法在预览保存后的文件时触发
}
public Map<String, Object> previewFromCacheWPS(String fileName, String path, String userAgent, InputStream cacheIn, Map<String, String> config) {
//cacheIn文件流 该方法在预览刚上传的临时文件时触发
}
//失败返回格式:
Map<String, Object> result = new HashMap();
result.put(PreviewParams.STATUS.getEnumName(), PreviewParams.ERROR.getEnumName());
result.put(PreviewParams.DESCRIPTION.getEnumName(), description);
//返回成功的格式:
//1、需要转换的返回转换后的流
previewResult.put(PreviewParams.STATUS.getEnumName(), PreviewParams.URL.getEnumName());
previewResult.put(PreviewParams.RESULT.getEnumName(), url);