Node.js OSS 对象存储
OSS(Object Storage Service)是云存储服务,以对象为基本存储单元,适合图片/视频/文档等海量文件存储。
常见 OSS 服务
| 服务商 | 产品 | SDK |
|---|---|---|
| 阿里云 | OSS | ali-oss |
| 腾讯云 | COS | cos-nodejs-sdk-v5 |
| AWS | S3 | @aws-sdk/client-s3 |
阿里云 OSS 示例
bash
npm install ali-ossjs
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 + 自定义域名 |
| 大文件分发 | 断点续传 + 分片上传 |