Skip to content

文件上传至 MinIO 对象存储服务工具库,支持单文件上传。

特性

  • 🚀 简单易用:单文件上传,快速集成
  • 📊 进度监控:实时上传进度回调
  • 取消上传:支持随时取消上传操作
  • 🔧 灵活配置:支持自定义配置参数
  • 📱 浏览器端支持:专为浏览器环境优化

安装

bash
pnpm add @mingto/minio-obs-server

快速开始

typescript
import minioObsServer from '@mingto/minio-obs-server'

// 配置全局参数
minioObsServer.config({
  getToken: () => '用户的token',
  baseURL: 'https://your-domain.com',
  apiPrefix: '/backend-api',
})

// 创建要上传的文件对象
const sourceFile = new File(['hello world'], 'hello.txt', { type: 'text/plain' })

// 创建上传实例
const uploadContext = minioObsServer.create({
  sourceFile,
  sceneId: '1',
  onProgress: (event) => {
    console.log(`上传进度: ${event.percent}%`)
  },
  onSuccess: (event) => {
    console.log('上传成功:', event.fileInfo)
  },
  onError: (error) => {
    console.error('上传失败:', error.code, error.message)
  }
})

// 取消上传
// uploadContext.abort()

API

全局配置

minioObsServer.config(options)

配置全局参数,支持以下参数:

参数类型必填默认值说明
getToken() => string用于获取上传所需的 token,该 token 用于身份验证
baseURLstring当前域名业务接口基础地址
apiPrefixstring/backend-api业务接口前缀(反向代理前缀)

创建上传实例

minioObsServer.create(options)

创建上传实例,支持以下参数:

参数类型必填默认值说明
sourceFileFile要上传的文件对象
sceneId'0' | '1''1'上传桶的类型,'0' 为私有桶,'1' 为公共桶;运行时默认 '1'
onStart() => void() => {}上传开始时的回调
onProgress(event) => void() => {}上传进度回调,event.percent 表示百分比
onSuccess(event) => void() => {}上传成功回调,event 包含 sourceFilefileInfo
onError(error) => void() => {}上传失败回调
onAbort() => void() => {}取消上传时的回调
onFinally() => void() => {}上传结束回调(无论成功或失败)

取消上传

uploadContext.abort()

取消当前上传。

typescript
uploadContext.abort()

错误处理

上传过程中出现错误时,会抛出对应的 ObsError 对象,可通过 error.code 获取错误码。

错误码描述
10001请求失败,请检查网络
10007文件上传取消失败,请检查网络

注意事项

  • 本工具库依赖 axios,请确保项目中已安装 axios,版本要求为 ^1.7.9
  • 请确保返回的 token 是有效的,否则可能导致上传失败