1.0.17 • Published 6 months ago

@minto-ai/huawei-obs-server v1.0.17

Weekly downloads
-
License
ISC
Repository
-
Last release
6 months ago

本工具库用于处理文件上传至华为云 OBS(对象存储服务),支持单文件上传和分片上传两种方式,能满足不同大小文件的上传需求。

安装

使用 pnpm 进行安装:

pnpm install @minto-ai/huawei-obs-server

使用

示例代码

import huaweiObsServer from '@minto-ai/huawei-obs-server'

// 配置全局参数
huaweiObsServer.config({
  getToken: () => '用户的token',
  fileSplitThreshold: 1024 * 1024 * 5
})

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

// 创建上传实例
const uploadContext = huaweiObsServer.create({
  sourceFile,
  onProgress: (event) => {
    console.log(`Upload progress: ${event.percent}%`)
  },
  onSuccess: (event) => {
    console.log('Upload success:', event.fileInfo)
  }
})

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

全局配置

全局配置可通过 huaweiObsServer.config 方法进行设置,支持以下参数:

参数类型必填默认值描述
getToken() => string用于获取上传所需的 token,该 token 用于身份验证,确保上传请求的合法性。
fileSplitThresholdnumber1024*1024*5(单位为字节)单文件上传和分片上传的文件大小分隔线。当文件大小超过该阈值时,将使用分片上传;否则使用单文件上传。

上传选项

创建上传实例时,可通过 huaweiObsServer.create 方法传入上传选项,支持以下参数:

参数类型必填默认值描述
sourceFileFile要上传的文件对象。
partSizenumber1024*1024*5(单位为字节)文件分片大小。
onStart() => void否·() => {}上传开始时的回调函数。
onProgress(event: { percent: number }) => void() => {}上传进度回调函数,event.percent 表示上传进度百分比。
onSuccess(event: { sourceFile: File, fileInfo: IUploadFileSuccessFile }) => void() => {}上传成功时的回调函数,event.sourceFile 为上传的文件对象,event.fileInfo 为文件上传信息。
onError(error: Error) => void() => {}上传失败时的回调函数,errorObsError错误对象。
onAbort() => void() => {}取消上传时的回调函数。
onFinally() => void() => {}上传结束时的回调函数,无论上传成功或失败都会触发。

取消上传

可通过调用上传实例的 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
  • 在使用 getToken 方法获取 token 时,请确保返回的 token 是有效的,否则可能导致上传失败。
  • 上传大文件时,建议根据网络状况和服务器性能调整 partSizefileSplitThreshold 参数,以提高上传效率。
1.0.17

6 months ago

1.0.16

6 months ago

1.0.13

6 months ago

1.0.12

6 months ago

1.0.11

6 months ago

1.0.1

8 months ago

1.0.0

8 months ago