Skip to content

统一的 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' 时通过后端接口获取
baseURLstring后端接口基础地址(用于 obsServerType='auto' 时拉取配置 & 作为上传模块业务接口前缀),不传则默认当前域名
apiPrefixstring业务接口前缀(反向代理前缀),默认 /backend-api
fileSplitThresholdnumber文件大小分隔线,默认值由具体上传实现决定

obsServer.create(options)

创建上传实例。

参数类型必填说明
sourceFileFile要上传的文件对象
partSizenumber分片大小,默认值由具体上传实现决定
sceneId'0' | '1'上传桶的类型,'0' 为私有桶,'1' 为公共桶;运行时默认 '1'
onStart() => void上传开始回调
onProgress(event) => void上传进度回调
onSuccess(event) => void上传成功回调
onError(error) => void上传失败回调
onAbort() => void取消上传回调
onFinally() => void上传结束回调

注意事项

  1. 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
  2. 参数配置:具体参数配置请参考对应工具库的文档