原文链接
https://novusai-saas.github.io/ja/ja/docs/business-services/common-business-services/file-processing-service.md文件处理服务
本文引用的源码与文档
本文引用的文件
- backend/app/storage/base.py
- backend/app/storage/manager.py
- backend/app/storage/drivers/local.py
- backend/app/utils/image.py
- backend/app/services/common/storage_config_resolver.py
- backend/app/services/common/storage_quota_service.py
- backend/app/services/common/file_validator.py
- backend/app/configs/definitions/platform/storage.py
- backend/app/configs/definitions/tenant/storage.py
- backend/plugins/amazon-s3/backend/driver.py
- backend/app/api/tenant/attachments.py
- backend/app/api/admin/attachments.py
- backend/app/services/system/attachment_service.py
- backend/app/services/tenant/attachment_service.py
目录
简介
本文件处理服务围绕“文件验证—图像处理—存储管理”三大主线构建,提供统一的文件上传、安全检查、图像格式转换与压缩、存储配额控制以及与多存储驱动的集成方案。系统通过可插拔的存储驱动、集中化的配置解析与配额服务,实现跨平台与多租户的灵活扩展。
项目结构
文件处理服务主要分布在以下模块:
- 存储抽象与驱动:定义统一的存储接口、驱动注册与本地驱动实现
- 图像处理工具:基于 Pillow 的图片处理与缓存策略
- 配置解析与配额:平台与租户双层配置解析、统一配额统计与批量查询
- 文件验证:扩展名白黑名单与大小限制的验证逻辑
- API 与服务:上传预检、上传流程、下载与访问控制
图表来源
- backend/app/storage/base.py:88-272
- backend/app/storage/manager.py:13-155
- backend/app/storage/drivers/local.py:31-446
- backend/app/utils/image.py:45-390
- backend/app/services/common/storage_config_resolver.py:113-429
- backend/app/services/common/storage_quota_service.py:18-284
- backend/app/services/common/file_validator.py:40-271
- backend/app/configs/definitions/platform/storage.py:1-544
- backend/app/configs/definitions/tenant/storage.py:1-443
- backend/app/api/tenant/attachments.py:110-137
- backend/app/api/admin/attachments.py:119-145
章节来源
- backend/app/storage/base.py:1-273
- backend/app/storage/manager.py:1-156
- backend/app/storage/drivers/local.py:1-446
- backend/app/utils/image.py:1-390
- backend/app/services/common/storage_config_resolver.py:1-430
- backend/app/services/common/storage_quota_service.py:1-285
- backend/app/services/common/file_validator.py:1-272
- backend/app/configs/definitions/platform/storage.py:1-544
- backend/app/configs/definitions/tenant/storage.py:1-443
- backend/app/api/tenant/attachments.py:110-137
- backend/app/api/admin/attachments.py:119-145
核心组件
- 存储驱动抽象与注册:统一上传、下载、URL 生成、信息查询与图像处理接口,支持本地与云存储驱动注册与切换
- 图像处理工具:支持缩放、裁剪、填充、格式转换与质量压缩,提供参数校验与缓存键生成
- 配置解析器:按“平台/管理员覆盖/企业自管”三层解析存储配置,确保历史附件可追溯访问
- 配额服务:统一统计企业已用空间、文件数与剩余配额,支持批量查询与计划有效性判断
- 文件验证器:基于扩展名白名单/黑名单与大小限制的验证,支持平台与企业两级配置
- API 与服务:提供预检与上传流程,结合验证、配额与存储上下文完成端到端处理
章节来源
- backend/app/storage/base.py:88-272
- backend/app/utils/image.py:45-390
- backend/app/services/common/storage_config_resolver.py:113-429
- backend/app/services/common/storage_quota_service.py:18-284
- backend/app/services/common/file_validator.py:40-271
架构总览
文件处理服务采用“配置解析—验证—存储上下文—驱动执行”的流水线式架构,图像处理在本地驱动中通过缓存与并发线程池优化性能,在云驱动中通过原生处理能力减少本地负担。
图表来源
- backend/app/api/tenant/attachments.py:110-137
- backend/app/api/admin/attachments.py:119-145
- backend/app/services/tenant/attachment_service.py:54-76
- backend/app/services/system/attachment_service.py:167-199
- backend/app/services/common/file_validator.py:40-271
- backend/app/services/common/storage_config_resolver.py:258-429
- backend/app/services/common/storage_quota_service.py:34-182
- backend/app/storage/base.py:106-246
- backend/app/utils/image.py:202-275
详细组件分析
存储驱动与管理器
- 抽象接口:统一 put/get/delete/exists/get_url/get_info/copy/move,以及图像处理相关接口
- 本地驱动:支持元数据侧写、URL 生成、图像处理与缓存、变体数量限制
- 云驱动:以插件形式接入,支持原生图像处理与 URL 生成
- 管理器:单例注册与检索驱动,提供驱动信息列表与可用性检测
图表来源
- backend/app/storage/base.py:88-272
- backend/app/storage/manager.py:13-155
- backend/app/storage/drivers/local.py:31-446
章节来源
- backend/app/storage/base.py:88-272
- backend/app/storage/manager.py:13-155
- backend/app/storage/drivers/local.py:31-446