转换服务实现转换服务根据配置委托对应的工具类来进行相应的操作(代码略):
- 使用ffmpeg转换视频
- 使用pdfbox转换pdf
- 使用libreoffice转换office
安全实现
- 安全通过Spring拦截器实现
- 按需求增加对应拦截即可
使用提供两个接口:
/*** 获取转换后的信息*/@ResponseBody@GetMapping(value = https://www.isolves.com/it/cxkf/jiagou/2019-07-31/"/realUrl/{token}")public ResponseEntity realUrl(@PathVariable String token) { .....}/*** 上传文件*/@ResponseBody@PostMapping(value = {"/partupload/{group}"})public ResponseEntity upload(HttpServletRequest request, @PathVariable String group) { .....}
- 通过upload接口上传文件,支持分片上传
- 上传完成后,会返回上传结果,结构如下:
{ "code": 1, "message": "maps.mp4", "token": "key_286400710002612", "group": "GROUP1", "fileType": "VIDEO", "filePath": "http://www.abc.com/1556172522968_maps.mp4"}
- 其中的filePath是原始文件路径
- 通过token,使用realUrl接口可以获取转换后的文件信息,结构如下:
{ "token": "key_282816586380196", "group": "SHILU", "fileType": "IMAGE", "filePath": "http://www.abc.com/SHILU/1/1556164891252_0.jpeg", "convertFileInfoList": [ { "fileLength": 0, "fileType": "IMAGE", "filePath": null, "imgPaths": [ "http://www.abc.com/SHILU/1/1556164891252_0_100_200.jpeg" ] } ]}配置## 对外提供服务的域名fileupload.server.name=http://www.abc.com## libreoffice home路径office.home=/snap/libreoffice/115/lib/libreoffice# 文件上传保存路径fileupload.upload.root=/home/files# 文件服务器动态配置# 图片配置,切100*200的图fileupload.config.imageConfigList[0].group=group1fileupload.config.imageConfigList[0].width=100fileupload.config.imageConfigList[0].height=200# 视频配置# 默认配置,转换m3u8fileupload.config.videoConfigList[0].group=group1# 转换webm,切第3秒的图fileupload.config.videoConfigList[1].group=group2fileupload.config.videoConfigList[1].type=webmfileupload.config.videoConfigList[1].frameSecondList[0]=3# office配置,默认转pngfileupload.config.officeConfigList[0].group=group1# 转PDFfileupload.config.officeConfigList[0].type=PDF# pdf配置,转pngfileupload.config.pdfConfigList[0].group=group1# 上传文件大小,当前端不支持分片上传时设置spring.servlet.multipart.max-file-size=1024MBspring.servlet.multipart.max-request-size=1024MB总结本文给出了一个文件服务相对完整的架构设计与实现过程 。整个架构设计流程如下:
- 梳理业务功能
- 梳理用例流程
- 基于业务功能,进行初步的模块划分
- 结合用例流程进行架构设计,期间可能反过来对模块及流程进行调整
- 对架构进行验证
- 业务流程验证:将用例套用到架构中进行验证
- 非功能性约束验证:模拟非功能性约束场景进行验证
- 技术选型(架构设计是与技术无关的)
- 遵循架构设计实现代码,测试(可能调整架构)
- 完整流程验证,使用说明
整个过程对各个约束做出了对应的决策,并进行了验证 。代码结构与架构设计完全匹配 。从架构设计图依图索骥即可理解代码逻辑 。
如有不妥或纰漏之处,欢迎大家探讨指教!
推荐阅读
-
台积电|抢人大战开始!台积电自作自受,上百名工程师全部跳槽!
-
周到|2021年度空军招飞简章发布,空军招飞网已可下载报名表和体检表
-
-
【梅西】谁说不会换人?巴萨主帅神调整,梅西助拉基蒂奇绝杀劲敌
-
喜欢我的男生说他对上一段感情有阴影,还不想谈恋爱,我该咋办
-
-
『中印边界冲突』印媒传中国军队部署到巴基斯坦,巴军方辟谣!
-
LOL电竞憨憨君|虽然不强,但阿水经常用她打爆对手,LPL下路出现一位新ADC
-
北京日报|八角游乐园旁有了八角新乐园,年底免费开放
-
#生肖#六月下旬,运气极佳,异性缘极佳,桃花运爆棚,最温柔的四大生肖
-
『桑葚』每天不妨多吃3种食物,美容养生、滋润肌肤,谁吃谁受益!
-
-
传播时尚智慧|宁静穿短裤这么好看,腿美得像少女的一样,搭配“雨鞋”很时髦!
-
公务员|2022年国考招录3.12万人:热门岗位报录比已超1700比1
-
-
「云南普洱茶」普洱生茶和熟茶有什么区别?哪一种更具价值?
-
c1驾照能开摩托车吗,摩托车会影响c1驾驶证吗--
-
时代|冠脉支架价格进入“百元时代” 持续创新才是企业“护城河”
-
【八卦新鲜事】内娱男爱豆中的神颜,蔡徐坤王一博丁程鑫还好,唯独被他给惊艳了,原创
-
学历造假■ 陷“学历造假”丑闻,巴西教育部长上任仅5天辞职!