EzCloud 统一文件附件存储模块源码解析:多存储适配、租户隔离与文件权限管控实现

📅 2026/7/22 5:19:09
EzCloud 统一文件附件存储模块源码解析:多存储适配、租户隔离与文件权限管控实现
前言企业微服务系统开发过程中文件上传、图片附件、合同文档存储是每个业务模块都离不开的基础能力。多数项目会在 ERP、CRM、维保工单、OA 内部分别编写上传逻辑存在代码重复、存储配置不统一、文件无权限管控、多租户文件混淆、图片预览适配繁琐等问题。EzCloud 独立拆分统一文件附件存储模块作为全局文件中台整合本地存储、对象存储多种方案统一封装上传、预览、权限、过期清理逻辑全业务模块共用一套能力减少大量重复开发工作。1、文件存储模块工程分层结构模块三层职责拆分全局统一收口所有附件操作file-config存储方式配置、文件大小 / 格式白名单、过期清理规则后台配置file-upload文件分片上传、图片压缩、格式校验、多存储驱动适配逻辑file-record文件记录、访问权限、租户隔离、下载日志、过期回收管理ERP 合同、客户资质、维保维修照片、OA 审批附件、报表导出文件全部调用该模块统一接口各业务无需单独实现上传逻辑。2、核心源码带租户隔离的文件上传逻辑javaService public class FileUploadServiceImpl implements FileUploadService { Autowired private FileRecordMapper fileRecordMapper; Autowired private StorageFactory storageFactory; Override Transactional(rollbackFor Exception.class) public FileVO uploadFile(MultipartFile file, Long tenantId, String businessType, Long businessId) { // 1、校验文件格式、大小拦截违规文件 FileCheckUtil.checkFile(file); // 2、根据配置选用对应存储驱动本地/OSS StorageClient storageClient storageFactory.getClient(); // 3、生成带租户隔离的唯一文件路径 String filePath FilePathUtil.generatePath(tenantId, businessType, file.getOriginalFilename()); // 4、执行文件写入存储 String fileUrl storageClient.upload(file, filePath); // 5、持久化文件记录绑定租户、业务单据 FileRecordDO record new FileRecordDO(); record.setTenantId(tenantId); record.setBusinessType(businessType); record.setBusinessId(businessId); record.setFileName(file.getOriginalFilename()); record.setFileUrl(fileUrl); record.setFileSize(file.getSize()); recordMapper.insert(record); // 6、组装返回文件访问信息 return FileVO.builder().fileUrl(fileUrl).fileName(record.getFileName()).id(record.getId()).build(); } }代码设计技术亮点文件路径强制携带租户标识不同企业附件完全隔离杜绝文件跨租户泄露统一存储工厂模式切换本地 / OSS 对象存储仅改配置无需修改业务上传代码内置文件格式、大小拦截校验从源头拦截恶意文件文件与业务单据、租户绑定关联支持按单据一键查询全部附件。3、模块核心技术能力分片大文件上传适配合同、图纸、高清维修图片等大体积文件上传解决上传中断问题图片自动压缩上传图片自动压缩尺寸节省存储空间加快页面加载速度在线预览能力图片、PDF、Office 文档无需下载直接在线预览文件访问权限管控绑定单据数据权限无单据查看权限则无法访问对应附件自动过期清理可配置临时文件自动删除规则避免服务器存储冗余垃圾文件。https://gitee.com/tan-tianming/ez-cloud4、二次开发拓展特性全业务统一复用新增任何业务单据无需重新编写上传代码直接调用标准接口支持自定义存储驱动可拓展对接第三方云存储独立插件可插拔无附件存储需求可直接移除模块完整日志记录文件上传、下载、访问行为方便后期溯源审计。总结EzCloud 统一文件附件存储模块解决多业务重复编写上传逻辑、存储方案切换繁琐、文件权限失控、租户附件混淆等开发痛点一套中台化文件能力支撑全系统业务代码复用性高是微服务项目通用底层能力优质参考方案。