Junhui Chen d31b587330 feat: 自动上传组件
feat: 自动上传组件
Co-authored-by: Junhui Chen <chenjunhui@fairclip.cn>
Co-committed-by: Junhui Chen <chenjunhui@fairclip.cn>
2025-07-17 15:55:27 +08:00

2.0 KiB
Raw Blame History

此目录包含后台媒体上传的逻辑,包括 API 交互、自动和手动上传过程、媒体库访问以及实用功能。

主要组件:

  • api.ts:处理与文件上传相关的 API 调用,例如获取上传 URL、确认上传和添加素材记录。
  • automatic.ts:实现后台任务的注册和定义,用于自动媒体上传,通常定期运行(例如,每 15 分钟)。它获取最近的媒体并处理它们以上传。
  • manual.ts:提供在指定日期范围内手动触发媒体上传的功能,并带有并发控制。
  • media.ts:管理与设备媒体库的交互(使用 expo-media-library),包括请求权限、获取带有 EXIF 数据的资产以及按日期范围过滤。
  • types.ts:定义后台上传模块中使用的 TypeScript 接口和类型,包括 ExtendedAssetUploadTaskConfirmUploadUploadUrlResponse
  • uploader.ts:包含处理和上传单个媒体文件的核心逻辑。这包括处理 HEIC 转换、图像压缩、视频缩略图生成、重复检查以及与上传 API 的交互。它还包括一个 uploadFileWithProgress 函数,用于跟踪上传进度。
  • utils.ts:提供实用功能,例如检查媒体库权限、提取文件扩展名和确定 MIME 类型。

整体功能:

background-uploader 模块使应用程序能够:

  1. 在后台自动上传新创建的媒体文件(照片和视频)。
  2. 允许在指定日期范围内手动上传媒体文件。
  3. 在上传前处理媒体文件,包括:
    • 将 HEIC 图像转换为 JPEG。
    • 压缩图像。
    • 为视频生成缩略图。
  4. 与后端 API 交互以管理上传生命周期(获取 URL、上传、确认
  5. 管理媒体库权限并获取带有详细 EXIF 信息的媒体资产。
  6. 通过检查本地数据库防止重复上传
  7. 提供上传的进度跟踪

该模块通过必要的预处理和错误处理,确保高效、可靠的媒体上传,无论是自动还是按需上传。