Skip to content

Node.js OSS 对象存储

OSS(Object Storage Service)是云存储服务,以对象为基本存储单元,适合图片/视频/文档等海量文件存储。

常见 OSS 服务

服务商产品SDK
阿里云OSSali-oss
腾讯云COScos-nodejs-sdk-v5
AWSS3@aws-sdk/client-s3

阿里云 OSS 示例

bash
npm install ali-oss
js
import OSS from 'ali-oss'

const client = new OSS({
  region: 'oss-cn-hangzhou',
  accessKeyId: process.env.ACCESS_KEY_ID,
  accessKeySecret: process.env.ACCESS_KEY_SECRET,
  bucket: 'my-bucket',
})

// 上传文件
const result = await client.put('images/avatar.png', './local-avatar.png')
console.log(result.url)  // https://my-bucket.oss-cn-hangzhou.aliyuncs.com/images/avatar.png

// 上传 Buffer
await client.put('data/file.json', Buffer.from(JSON.stringify(data)))

// 上传 Stream
const stream = fs.createReadStream('./video.mp4')
await client.putStream('video/movie.mp4', stream)

集成到大文件上传

js
app.post('/upload', upload.single('file'), async (req, res) => {
  const stream = fs.createReadStream(req.file.path)
  await client.putStream(`uploads/${req.file.originalname}`, stream)
  fs.unlinkSync(req.file.path)  // 上传后删除本地临时文件
  res.send('上传成功')
})

应用场景

场景说明
图片/视频托管静态资源直接存 OSS + CDN
数据备份定时备份数据库到 OSS
静态网站托管OSS + 自定义域名
大文件分发断点续传 + 分片上传