2025-07-17 15:45:41 +08:00

27 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

此目录包含后台媒体上传的逻辑,包括 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` 模块使应用程序能够:
1. 在后台**自动上传**新创建的媒体文件(照片和视频)。
2. 允许在指定日期范围内**手动上传**媒体文件。
3. 在上传前**处理媒体文件**,包括:
* 将 HEIC 图像转换为 JPEG。
* 压缩图像。
* 为视频生成缩略图。
4. **与后端 API 交互**以管理上传生命周期(获取 URL、上传、确认
5. **管理媒体库权限**并获取带有详细 EXIF 信息的媒体资产。
6. 通过检查本地数据库**防止重复上传**。
7. 提供上传的**进度跟踪**。
该模块通过必要的预处理和错误处理,确保高效、可靠的媒体上传,无论是自动还是按需上传。