63 行
1.9 KiB
Markdown
63 行
1.9 KiB
Markdown
|
|
# sdk-file
|
||
|
|
|
||
|
|
XuqmGroup Android SDK 的平台文件扩展。它是依赖 `sdk-core` 的可选模块,统一承载:
|
||
|
|
|
||
|
|
- 使用 XuqmSDK 当前登录态和租户平台文件服务上传文件;
|
||
|
|
- 通过模块唯一声明的 `FileProvider` 安全打开本地文件。
|
||
|
|
|
||
|
|
纯下载、SHA-256、MediaStore 保存等无需初始化的能力仍由
|
||
|
|
`com.xuqm.sdk.file.FileSDK` 提供,`sdk-core` 不包含上传转发 API 或 FileProvider。
|
||
|
|
|
||
|
|
## 集成
|
||
|
|
|
||
|
|
```kotlin
|
||
|
|
dependencies {
|
||
|
|
implementation("com.xuqm:sdk-file:VERSION")
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
宿主同时应用 `com.xuqm.common` 构建插件,并将租户平台签发的
|
||
|
|
`config.xuqmconfig` 放在 `app/src/main/assets/config/config.xuqmconfig`。模块的
|
||
|
|
`XuqmMergedProvider` 只有检测到构建插件生成的标记后才会自动初始化 SDK。
|
||
|
|
|
||
|
|
## 上传
|
||
|
|
|
||
|
|
```kotlin
|
||
|
|
val fromUri = PlatformFileSDK.upload(
|
||
|
|
context = context,
|
||
|
|
uri = uri,
|
||
|
|
onProgress = { progress -> /* 0..100 */ },
|
||
|
|
)
|
||
|
|
|
||
|
|
val fromFile = PlatformFileSDK.upload(
|
||
|
|
file = file,
|
||
|
|
onProgress = { progress -> /* 0..100 */ },
|
||
|
|
)
|
||
|
|
|
||
|
|
val fromBytes = PlatformFileSDK.uploadBytes(
|
||
|
|
fileName = "photo.jpg",
|
||
|
|
mimeType = "image/jpeg",
|
||
|
|
bytes = bytes,
|
||
|
|
)
|
||
|
|
```
|
||
|
|
|
||
|
|
`Uri` 和 `File` 使用流式请求体,不会把完整文件读入内存。返回
|
||
|
|
`FileUploadResult`,字段包括 `url`、`thumbnailUrl`、`hash`、`size`、
|
||
|
|
`originalName`、`mimeType` 和 `ext`。
|
||
|
|
|
||
|
|
三个上传入口都会先等待签名配置和平台服务配置初始化完成,宿主无需自行增加等待
|
||
|
|
逻辑。平台返回失败、状态不一致或成功响应缺少 data 时抛出
|
||
|
|
`PlatformFileException`;其 `code`、`status`、`message` 保留服务端结构化错误,
|
||
|
|
但不会暴露原始响应体。
|
||
|
|
|
||
|
|
## 打开文件
|
||
|
|
|
||
|
|
```kotlin
|
||
|
|
PlatformFileSDK.openFile(context, file)
|
||
|
|
```
|
||
|
|
|
||
|
|
打开本地文件不依赖平台初始化或登录。
|
||
|
|
|
||
|
|
模块唯一声明 `${applicationId}.xuqm.fileprovider`。宿主和其他 SDK 不应重复声明
|
||
|
|
同一用途的 FileProvider。
|