2.0 KiB
2.0 KiB
此目录包含后台媒体上传的逻辑,包括 API 交互、自动和手动上传过程、媒体库访问以及实用功能。
主要组件:
api.ts:处理与文件上传相关的 API 调用,例如获取上传 URL、确认上传和添加素材记录。automatic.ts:实现后台任务的注册和定义,用于自动媒体上传,通常定期运行(例如,每 15 分钟)。它获取最近的媒体并处理它们以上传。manual.ts:提供在指定日期范围内手动触发媒体上传的功能,并带有并发控制。media.ts:管理与设备媒体库的交互(使用expo-media-library),包括请求权限、获取带有 EXIF 数据的资产以及按日期范围过滤。types.ts:定义后台上传模块中使用的 TypeScript 接口和类型,包括ExtendedAsset、UploadTask、ConfirmUpload和UploadUrlResponse。uploader.ts:包含处理和上传单个媒体文件的核心逻辑。这包括处理 HEIC 转换、图像压缩、视频缩略图生成、重复检查以及与上传 API 的交互。它还包括一个uploadFileWithProgress函数,用于跟踪上传进度。utils.ts:提供实用功能,例如检查媒体库权限、提取文件扩展名和确定 MIME 类型。
整体功能:
background-uploader 模块使应用程序能够:
- 在后台自动上传新创建的媒体文件(照片和视频)。
- 允许在指定日期范围内手动上传媒体文件。
- 在上传前处理媒体文件,包括:
- 将 HEIC 图像转换为 JPEG。
- 压缩图像。
- 为视频生成缩略图。
- 与后端 API 交互以管理上传生命周期(获取 URL、上传、确认)。
- 管理媒体库权限并获取带有详细 EXIF 信息的媒体资产。
- 通过检查本地数据库防止重复上传。
- 提供上传的进度跟踪。
该模块通过必要的预处理和错误处理,确保高效、可靠的媒体上传,无论是自动还是按需上传。