存储方案
存储插件体系说明
插件接口
Uploader
插件方法描述
/**
* 配置各个存储方案的参数
*
* @return 参数列表
*/
List<ConfigItem> definitionConfigItem();
/**
* 上传文件
*
* @param input 上传对象
* @param scene 业务场景
* @param config 配置信息
* @return
*/
FileVO upload(FileDTO input, String scene, Map config);
/**
* 删除文件
*
* @param filePath 文件地址
* @param config 配置信息
*/
void deleteFile(String filePath, Map config);
/**
* 获取插件ID
*
* @return 插件beanId
*/
String getPluginId();
/**
* 生成缩略图路径
*
* @param url 原图片全路径
* @param width 需要生成图片尺寸的宽
* @param height 需要生成图片尺寸的高
* @return 生成的缩略图路径
*/
String getThumbnailUrl(String url, Integer width, Integer height);
/**
* 存储方案是否开启
*
* @return 0 不开启 1 开启
*/
Integer getIsOpen();
/**
* 获取插件名称
*
* @return 插件名称
*/
String getPluginName();
现有存储方式
本地(仅限本地测试)、OSS和MinIO存储
开发新的存储插件
实现插件接口
@Service
public class YourPlugin implements Uploader {
//其他方法略
}
注意:用@Service注解为spring bean,以便spring ioc识别,将插件扫描加入插件体系。
定义插件id及名字
@Override
public String getPluginId() {
return "myPluginName";
}
@Override
public String getPluginName() {
return "xx存储插件";
}
注意:需要保持插件id的唯一性,这是插件机制调起插件依据
定义存储方案配置项
存储方案平台配置项的目的是定义用户使用存储方案前需要配置的一些存储方案参数,如存储空间等:
要达到上图的效果,需要后端来配置信息,具体在存储方案的definitionConfigItem中,一个配置项相当于一个ConfigItem对象,如下,需要根据实际情况调整
@Override
public List<ConfigItem> definitionConfigItem() {
List<ConfigItem> list = new ArrayList();
ConfigItem endPoint = new ConfigItem();
endPoint.setType("text");
endPoint.setName("endpoint");
endPoint.setText("EndPoint(地域节点)");
ConfigItem buketName = new ConfigItem();
buketName.setType("text");
buketName.setName("bucketName");
buketName.setText("储存空间");
ConfigItem picLocation = new ConfigItem();
picLocation.setType("text");
picLocation.setName("picLocation");
picLocation.setText("二级路径");
ConfigItem accessKeyId = new ConfigItem();
accessKeyId.setType("text");
accessKeyId.setName("accessKeyId");
accessKeyId.setText("密钥id");
ConfigItem accessKeySecret = new ConfigItem();
accessKeySecret.setType("text");
accessKeySecret.setName("accessKeySecret");
accessKeySecret.setText("密钥");
list.add(endPoint);
list.add(buketName);
list.add(picLocation);
list.add(accessKeyId);
list.add(accessKeySecret);
return list;
}
存储方案配置的获取
用户配置了存储方案平台的参数(如储存空间等)在OSS调起时需要获取到这些参数,可以通过如下方法获取:
Map FileManagerImpl.getConfig()
返回值
针对OSS,返回类型Map如下,不同的存储方案返回的map中的key值不同,会与定义存储方案配置项那步设置的内容一致
{
"endpoint":"XXXXXXXXX",
"bucketName":"XXXXXXX",
"picLocation":"XX",
"accessKeyId":"XX",
"accessKeySecret":"XX",
}
编写上传逻辑
@Override
public FileVO upload(FileDTO input, String scene,Map config) {
//在这里编写插件的查询逻辑
}
入参
input
上传的文件转换的DTO对象
scene
业务场景goods,shop,member,other
config
存储方案参数获取的得到的map值
返回值
FileVO
public class FileVO {
/**
* 文件名称
*/
private String name;
/**
* 文件后缀
*/
private String ext;
/**
* url 图片地址
*/
private String url;
...getter and setter
}