OSS静态资源上传开发文档
版本 | 说明 | 日期 | 作者 |
---|---|---|---|
v1.0 | 初版架构 | 2017-08-09 | 郑皓 |
v2.0 | 1、修复命名不规范2、细节更改3、各种图形重新整理。 | 2017-08-10 | 郑皓 |
1 需求
对接阿里云oss接口,实现图片上传。
2 开发
2.1 数据库设计
2.1.1 存储方案表(es_uploader)
字段 | 类型 | 长度 | 说明 |
---|---|---|---|
id | int | 10 | Id |
up_name | varchar | 50 | 名称 |
up_open | int | 2 | 是否开启1:开启0:未开启 |
up_config | text | 255 | 参数 |
up_bean_id | varchar | 15 | 插件beanid |
2.2 架构
2.2.1 OSS参数项的获取
说明:
浏览器通过getPlugin方法控制器发出请求
控制器通过getPlugin方法调用业务层获取参数项目。
在业务层通过findPlugin方法获取IUploader。通过返回的事件IUploader调用definitionConfigItem方法来获取存储方案,返回类型为List<ConfigItem>,在控制器层将其转换成json返回浏览器。
2.2.2 OSS文件上传
说明:
浏览器通过需要上传文件的方法向控制器发出请求。
控制器调业务层上传文件的方法,方法中调用工厂类getUploader方法,返回当前开启的存储方案(事件)。
通过事件来调用当前选择开启的存储方案对应插件的上传方法,进行上传(删除)操作。上传才做会最终返回给浏览器路径。
注意:
- 工厂类UploadFacatory是单例,遵循单例模式,只实例化一次。
2.2.3 商品缩略图上传
说明:
浏览器上传商品图片调GoodsGalleryUploadController控制器。
GoodsGalleryUploadController控制器通过调业务层upload方法来存储缩略图。
具体实现首先通过IUpload调不同的上传实现,返回原图路径,接着根据缩略图规则将路径保存到数据库中。
2.2.4 包命名
说明:在shoptnt-core中开发包设计如下
com.enation.app.base.upload.backend.controllor
com.enation.app.base.upload.service
com.enation.app.base.upload.service.impl
com.enation.app.base.upload.plugin
com.enation.app.base.upload.model
com.enation.app.base.upload