公用组件的设计——文件上传案例,个人总结

最近负责项目组内部的一个文件上传的公用组件设计,中间经历了几次代码和功能的变更,以至于出现了组件的版本问题,旧的组件已经被组内其他人使用,新的版本组件又增加了新的组件功能,出现了功能和代码的覆盖,需要高版本兼容低版本的代码。

总结来说,公用组件的设计支出需要考虑一下几点:

1、泛用性需求的整理

2、组件的扩展

3、调用组件的方式

那文件上传这个组件举例说明:

首先,文件上传组件通常包含几个泛用性比较强的功能:上传附件,附件管理(删除附件,预览附件,附件下载),附件限制(附件格式限制,附件数量限制,附件大小限制),上传/删除成功回调(消息提示,文件标识存储(保证附件唯一)),另外还可以包含的功能:多附件压缩打包下载,附件内容解析与导入(限制excel),组件的异常(断点续传)与安全。

上传附件:文件上传的核心功能;

附件管理:对上传的附件做增删改成的管理

附件限制:特殊业务场景,需要对文件的大小与格式有限制,也有一定的安全保障在内,限制用户上传非附件的文件,如脚本,jar,exe等执行文件

上传/删除成功回调:附件上传/删除成功,需要返回一个消息提示调用端结果,有些业务需要保存该文件的唯一标识符与真实文件名,这些都需要通过回调来实现。

多附件压缩打包下载:某些业务场景,涉及众多附件的下载,不肯能一个个点,或者一个个下载,需要在服务器压缩打包,以压缩包的格式下载。

附件内容解析与导入:这个功能使用在很多业务场景比较多,可以独立成单独的一个excel导出,导出功能组件了,也可以集成到附件上传组件内。

组件的异常与安全:组件的异常处理,保证服务器,网络等导致的异常可以正常通过消息提醒反馈,以及断点续传等。组件的安全性,有篇文章讲可以把GIF或者 JPG文件和JAR文件捆绑在一起,然后欺骗服务器以为是GIF或JPG文件,然后在客户端的JVM中执行JAR,因为附件组件还需要遵循一些安全规则:

1. 文件上传的目录设置为不可执行
2. 判断文件类型(附件限制)
3. 单独设置文件服务器的域名,防止xss
4. 改写文件名,文件路径不可预测

 

当然,要完整设计一个良好,安全的组件是很难的,需要不断的迭代更新,和扩展。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值