轻量的阿里云 OSS 库 for Node.js
来源于一个实际生产项目,将常用的 API 和业务解耦后封装成此库,尚未覆盖到阿里云 OSS 的全部操作。后续会根据实际使用情况优化和扩充新的服务。若需用到其他完整接口,可以直接使用阿里云官方 SDK ali-oss
- 轻量 相对于官方的 SDK,无第三方依赖,更轻量
- COA 友好 配合 COA 使用,效率更高,报错信息更友好
- TypeScript 使用 TypeScript 编写,类型约束,IDE 友好
yarn add coa-ali-oss
import { CoaAliOssBin } from 'coa-ali-oss'
// bucket配置
const ossBucketConfig = {
accessKeyId: 'LTAIOKxxxxxxWSue9q',
accessKeySecret: 'pyTLRH0sGooAxxxxxxxxxxxxxxxxxANqPedamD',
region: 'oss-cn-shanghai',
bucket: 'bucket-name',
origin: 'https://example.coajs.com/',
}
// 创建一个配置实例
const ossBucketBin = new CoaAliOssBin(ossBucketConfig)
操作 Object 的原始 API 详见 阿里云帮助文档
import { CoaAliOssObjectService } from 'coa-ali-oss'
// 创建一个Object服务
const objectService = new CoaAliOssObjectService(ossBucketBin)
// 获取前端上传图片所需的token,图片路径前缀必传
// 前端上传图片机制详见 https://help.aliyun.com/document_detail/31926.html
await objectService.token('user/avatar')
// 从服务器获取数据
await objectService.get('user/avatar/001.png')
// 从服务器获取元信息数据
await objectService.head('user/avatar/001.png')
// 将服务器文件下载到本地
await objectService.download(
'user/avatar/001.png',
'/local-path/avatar/001.png'
)
// 将Buffer写入服务器
await objectService.put(
'user/avatar/002.png',
Buffer.from([
/*buffer数据*/
])
)
// 将本地文件上传到服务器
await objectService.download(
'user/avatar/002.png',
'/local-path/avatar/002.png'
)
// 将服务器上文件复制到另一个地方
await objectService.copy('user/avatar/001.png', 'new/avatar/001.png')
// 删除服务器上的文件
await objectService.delete('user/avatar/002.png')
// 获取图片的基本信息
await objectService.imageInfo('user/avatar/001.png') // { width:1280, height:720, fileSize:160000 }