更新记录
1.0.2(2026-01-09)
- 支持android
1.0.1(2026-01-09)
- 添加上传重试回调
1.0.0(2026-01-08)
- 首发,支持ios
平台兼容性
uni-app(4.85)
| Vue2 | Vue2插件版本 | Vue3 | Vue2插件版本 | Chrome | Safari | app-vue | app-vue插件版本 | app-nvue | app-nvue插件版本 | Android | Android插件版本 | iOS | iOS插件版本 | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| √ | 1.0.0 | √ | 1.0.0 | × | × | √ | 1.0.0 | √ | 1.0.0 | 5.0 | 1.0.0 | 12 | 1.0.0 | × |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | × | × |
uni-app x(4.85)
| Chrome | Safari | Android | Android插件版本 | iOS | iOS插件版本 | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|---|---|
| × | × | 5.0 | 1.0.0 | 12 | 1.0.0 | × | × |
UTS环境兼容性
| uni-app | uni-app x |
|---|---|
| √ | √ |
sn-uts-alioss
阿里云 OSS(对象存储服务)UTS 插件,支持文件上传和删除功能。
功能特性
- ✅ 文件上传到 OSS(使用 STS Token)
- ✅ 上传进度回调
- ✅ 取消上传任务
- ✅ 删除单个文件
- ✅ 批量删除文件(最多1000个)
- ✅ 取消删除任务
- ✅ 自动持有 OSS Client,防止 session 失效
安装说明
- 将
uni_modules/sn-uts-alioss目录复制到你的 uni-app 项目的uni_modules目录下 - 确保已安装阿里云 OSS iOS SDK 依赖
API 文档
类型定义
SnUtsAliossStsConfig
STS Token 配置类型
type SnUtsAliossStsConfig = {
accessKeyId: string // 访问密钥 ID
accessKeySecret: string // 访问密钥 Secret
securityToken: string // STS Token
endpoint: string // OSS 端点地址
bucketName: string // Bucket 名称
}
SnUtsAliossResult
操作结果类型
type SnUtsAliossResult = {
code: number // 状态码:0-成功,-1-失败,-2-已取消
data: UTSJSONObject // 结果数据
}
上传文件
uploadFile
上传文件到 OSS(使用 STS Token)
参数:
type SnUtsAliossUploadConfig = {
stsConfig: SnUtsAliossStsConfig // STS 配置
objectKey: string // OSS 对象键(文件路径)
filePath: string // 本地文件路径
?: (progress: number) => void // 上传进度回调(可选,0-1)
onRetry? : SnUtsAliossRetryCallback | null // 重试回调
onSuccess: (result: SnUtsAliossResult) => void // 成功回调
onError: (result: SnUtsAliossResult) => void // 错误回调
}
返回值: string - 任务 ID,可用于取消上传
示例:
import { uploadFile } from '@/uni_modules/sn-uts-alioss/utssdk/app-ios/index.uts'
const taskId = uploadFile({
stsConfig: {
accessKeyId: 'your-access-key-id',
accessKeySecret: 'your-access-key-secret',
securityToken: 'your-security-token',
endpoint: 'oss-cn-hangzhou.aliyuncs.com',
bucketName: 'your-bucket-name'
},
objectKey: 'uploads/image.jpg',
filePath: '/path/to/local/file.jpg',
: (progress) => {
console.log(`上传进度: ${(progress * 100).toFixed(2)}%`)
},
onRetry: () => {
console.log('上传重试')
},
onSuccess: (result) => {
console.log('上传成功', result)
// result.data 包含: taskId, objectKey, eTag, requestId
},
onError: (error) => {
console.error('上传失败', error)
// error.data 包含: error, taskId
}
})
cancelUpload
取消上传任务
参数:
taskId: string- 任务 ID(由uploadFile返回)
示例:
import { cancelUpload } from '@/uni_modules/sn-uts-alioss/utssdk/app-ios/index.uts'
cancelUpload(taskId)
删除文件
deleteFile
删除单个文件
参数:
type SnUtsAliossDeleteConfig = {
stsConfig: SnUtsAliossStsConfig // STS 配置
objectKey: string // OSS 对象键(文件路径)
onSuccess: (result: SnUtsAliossResult) => void // 成功回调
onError: (result: SnUtsAliossResult) => void // 错误回调
}
返回值: string - 任务 ID,可用于取消删除
示例:
import { deleteFile } from '@/uni_modules/sn-uts-alioss/utssdk/app-ios/index.uts'
const taskId = deleteFile({
stsConfig: {
accessKeyId: 'your-access-key-id',
accessKeySecret: 'your-access-key-secret',
securityToken: 'your-security-token',
endpoint: 'oss-cn-hangzhou.aliyuncs.com',
bucketName: 'your-bucket-name'
},
objectKey: 'uploads/image.jpg',
onSuccess: (result) => {
console.log('删除成功', result)
// result.data 包含: objectKey, requestId
},
onError: (error) => {
console.error('删除失败', error)
// error.data 包含: error, objectKey
}
})
deleteMultipleFiles
批量删除文件(最多1000个)
参数:
type SnUtsAliossDeleteMultipleConfig = {
stsConfig: SnUtsAliossStsConfig // STS 配置
objectKeys: string[] // OSS 对象键数组
quiet?: boolean // 是否使用简单模式(默认true,只返回删除失败的文件)
onSuccess: (result: SnUtsAliossResult) => void // 成功回调
onError: (result: SnUtsAliossResult) => void // 错误回调
}
返回值: string - 任务 ID,可用于取消删除
quiet 模式说明:
quiet = true(默认):简单模式,只返回删除失败的文件列表quiet = false:详细模式,返回所有删除的文件列表
示例:
import { deleteMultipleFiles } from '@/uni_modules/sn-uts-alioss/utssdk/app-ios/index.uts'
const taskId = deleteMultipleFiles({
stsConfig: {
accessKeyId: 'your-access-key-id',
accessKeySecret: 'your-access-key-secret',
securityToken: 'your-security-token',
endpoint: 'oss-cn-hangzhou.aliyuncs.com',
bucketName: 'your-bucket-name'
},
objectKeys: [
'uploads/image1.jpg',
'uploads/image2.jpg',
'folder/image3.jpg'
],
quiet: true, // 可选,默认 true
onSuccess: (result) => {
console.log('批量删除成功', result)
// quiet=true: result.data 包含: requestId, failedObjects(失败的文件列表)
// quiet=false: result.data 包含: requestId, deletedObjects(所有删除的文件列表)
},
onError: (error) => {
console.error('批量删除失败', error)
// error.data 包含: error, objectKeys
}
})
cancelDelete
取消删除任务(支持单个和批量删除)
参数:
taskId: string- 任务 ID(由deleteFile或deleteMultipleFiles返回)
示例:
import { cancelDelete } from '@/uni_modules/sn-uts-alioss/utssdk/app-ios/index.uts'
cancelDelete(taskId)
完整示例
import {
uploadFile,
cancelUpload,
deleteFile,
deleteMultipleFiles,
cancelDelete
} from '@/uni_modules/sn-uts-alioss/utssdk/app-ios/index.uts'
// STS 配置
const stsConfig = {
accessKeyId: 'your-access-key-id',
accessKeySecret: 'your-access-key-secret',
securityToken: 'your-security-token',
endpoint: 'oss-cn-hangzhou.aliyuncs.com',
bucketName: 'your-bucket-name'
}
// 1. 上传文件
const uploadTaskId = uploadFile({
stsConfig,
objectKey: 'uploads/photo.jpg',
filePath: '/path/to/photo.jpg',
: (progress) => {
console.log(`上传进度: ${(progress * 100).toFixed(2)}%`)
},
onSuccess: (result) => {
console.log('上传成功', result.data)
},
onError: (error) => {
console.error('上传失败', error.data)
}
})
// 如果需要取消上传
// cancelUpload(uploadTaskId)
// 2. 删除单个文件
const deleteTaskId = deleteFile({
stsConfig,
objectKey: 'uploads/photo.jpg',
onSuccess: (result) => {
console.log('删除成功', result.data)
},
onError: (error) => {
console.error('删除失败', error.data)
}
})
// 如果需要取消删除
// cancelDelete(deleteTaskId)
// 3. 批量删除文件
const deleteMultipleTaskId = deleteMultipleFiles({
stsConfig,
objectKeys: ['file1.jpg', 'file2.jpg', 'file3.jpg'],
quiet: true,
onSuccess: (result) => {
console.log('批量删除成功', result.data)
if (result.data.failedObjects) {
console.log('删除失败的文件:', result.data.failedObjects)
}
},
onError: (error) => {
console.error('批量删除失败', error.data)
}
})
// 如果需要取消批量删除
// cancelDelete(deleteMultipleTaskId)
注意事项
-
STS Token 安全
- STS Token 具有时效性,建议在服务端生成并定期刷新
- 不要在前端代码中硬编码 AccessKey,应使用 STS Token
-
文件路径
filePath支持相对路径和绝对路径- 相对路径会自动转换为绝对路径
-
批量删除限制
- 批量删除最多支持 1000 个文件
- 超过限制会返回错误
-
任务管理
- 所有任务都会自动持有 OSS Client,防止 session 失效
- 任务完成后会自动清理,无需手动管理
-
错误处理
- 所有操作都通过回调返回结果
code = 0表示成功,code = -1表示失败,code = -2表示已取消- 错误信息在
result.data.error中
-
线程安全
- 所有回调都会在主线程执行,可以直接更新 UI

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 13753
赞赏 9
下载 13117716
赞赏 1842
赞赏
京公网安备:11010802035340号