@mingto/huawei-obs-server
v1.0.28
Published
华为云OBS文件上传
Downloads
617
Readme
@mingto/huawei-obs-server
文件上传至华为云 OBS(对象存储服务)工具库,支持单文件上传和分片上传两种方式,能满足不同大小文件的上传需求。
特性
- 🚀 双模式支持:单文件上传 + 分片上传,自动根据文件大小选择
- 📊 进度监控:实时上传进度回调
- ❌ 取消上传:支持随时取消上传操作
- 🔧 灵活配置:支持自定义分片大小、分片阈值等参数
- 📱 浏览器端支持:专为浏览器环境优化
安装
pnpm add @mingto/huawei-obs-server快速开始
import huaweiObsServer from '@mingto/huawei-obs-server'
// 配置全局参数
huaweiObsServer.config({
getToken: () => '用户的token',
fileSplitThreshold: 1024 * 1024 * 5 // 5MB,超过此阈值使用分片上传
})
// 创建要上传的文件对象
const sourceFile = new File(['hello world'], 'hello.txt', { type: 'text/plain' })
// 创建上传实例
const uploadContext = huaweiObsServer.create({
sourceFile,
onProgress: (event) => {
console.log(`上传进度: ${event.percent}%`)
},
onSuccess: (event) => {
console.log('上传成功:', event.fileInfo)
},
onError: (error) => {
console.error('上传失败:', error.code, error.message)
}
})
// 取消上传
// uploadContext.abort()API
全局配置
huaweiObsServer.config(options)
配置全局参数,支持以下参数:
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|------|------|------|--------|------|
| getToken | () => string | 是 | 无 | 用于获取上传所需的 token,该 token 用于身份验证 |
| fileSplitThreshold | number | 否 | 6MB | 文件大小分隔线,超过阈值使用分片上传 |
创建上传实例
huaweiObsServer.create(options)
创建上传实例,支持以下参数:
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|------|------|------|--------|------|
| sourceFile | File | 是 | 无 | 要上传的文件对象 |
| partSize | number | 否 | 5MB | 文件分片大小 |
| onStart | () => void | 否 | () => {} | 上传开始时的回调 |
| onProgress | (event) => void | 否 | () => {} | 上传进度回调,event.percent 表示百分比 |
| onSuccess | (event) => void | ❌ | () => {} | 上传成功回调,event 包含 sourceFile 和 fileInfo |
| onError | (error) => void | ❌ | () => {} | 上传失败回调 |
| onAbort | () => void | 否 | () => {} | 取消上传时的回调 |
| onFinally | () => void | 否 | () => {} | 上传结束回调(无论成功或失败) |
取消上传
uploadContext.abort()
取消当前上传。
uploadContext.abort()错误处理
上传过程中出现错误时,会抛出对应的 ObsError 对象,可通过 error.code 获取错误码。
| 错误码 | 描述 |
|--------|------|
| 10001 | 请求失败,请检查网络 |
| 10022 | 切片上传文件初始化信息的临时 URL 获取失败 |
| 10002 | 切片上传文件初始化信息获取失败 |
| 10033 | 切片上传文件段的临时 URL 获取失败 |
| 10003 | 切片上传文件段失败 |
| 10055 | 合并文件段的临时 URL 获取失败 |
| 10005 | 合并文件段失败 |
| 10006 | 获取文件信息失败 |
| 10009 | 单文件上传获取临时 URL 失败 |
| 10099 | 单文件上传失败 |
| 10007 | 文件上传取消失败 |
注意事项
- 本工具库依赖
axios,请确保项目中已安装axios,版本要求为^1.7.9 - 请确保返回的 token 是有效的,否则可能导致上传失败
- 上传大文件时,建议根据网络状况调整
partSize和fileSplitThreshold参数
许可证
MIT
