Appearance
统一的 OBS 文件上传工具库,旨在简化并高效处理文件上传任务。该工具库支持使用 @mingto/huawei-obs-server、@mingto/aws-obs-server 或 @mingto/minio-v2-server-obs 来完成上传操作。
特性
- 🔄 自动适配:自动识别 OBS 类型并选择对应上传方式
- 📦 统一接口:所有 OBS 类型使用相同的 API 接口
- 🚀 支持大文件:自动分片上传
- 📊 进度监控:实时上传进度回调
- ❌ 取消上传:支持随时取消上传操作
安装
bash
pnpm add @mingto/obs-server快速开始
typescript
import obsServer from '@mingto/obs-server'
// 配置全局参数
await obsServer.config({
getToken: () => '用户的token',
obsServerType: 'auto',
baseURL: 'https://your-domain.com',
apiPrefix: '/backend-api',
fileSplitThreshold: 1024 * 1024 * 5
})
// 创建要上传的文件对象
const sourceFile = new File(['hello world'], 'hello.txt', { type: 'text/plain' })
// 创建上传实例
const uploadContext = obsServer.create({
sourceFile,
sceneId: '1',
onProgress: (event) => {
console.log(`上传进度: ${event.percent}%`)
},
onSuccess: (event) => {
console.log('上传成功:', event.fileInfo)
},
onError: (error) => {
console.error('上传失败:', error)
}
})
// 取消上传
// uploadContext.abort()API
obsServer.config(options)
全局配置方法。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| getToken | () => string | 是 | 获取上传所需的 token |
| obsServerType | 'aws' | 'huawei' | 'minio' | 'auto' | 否 | OBS 服务类型,默认 'huawei';设置为 'auto' 时通过后端接口获取 |
| baseURL | string | 否 | 后端接口基础地址(用于 obsServerType='auto' 时拉取配置 & 作为上传模块业务接口前缀),不传则默认当前域名 |
| apiPrefix | string | 否 | 业务接口前缀(反向代理前缀),默认 /backend-api |
| fileSplitThreshold | number | 否 | 文件大小分隔线,默认值由具体上传实现决定 |
obsServer.create(options)
创建上传实例。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| sourceFile | File | 是 | 要上传的文件对象 |
| partSize | number | 否 | 分片大小,默认值由具体上传实现决定 |
| sceneId | '0' | '1' | 是 | 上传桶的类型,'0' 为私有桶,'1' 为公共桶;运行时默认 '1' |
| onStart | () => void | 否 | 上传开始回调 |
| onProgress | (event) => void | 否 | 上传进度回调 |
| onSuccess | (event) => void | 否 | 上传成功回调 |
| onError | (error) => void | 否 | 上传失败回调 |
| onAbort | () => void | 否 | 取消上传回调 |
| onFinally | () => void | 否 | 上传结束回调 |
注意事项
OBS 类型选择:
obsServerType默认使用huawei,设置为auto时会调用GET /backend-api/tuzai/file/config获取 OBS 类型,结果从response.data.data读取- 返回
aws→ 使用@mingto/aws-obs-server - 返回
huawei→ 使用@mingto/huawei-obs-server - 返回
minio→ 使用@mingto/minio-v2-server-obs
- 返回
参数配置:具体参数配置请参考对应工具库的文档