返回
轻松搞定OSS签名直传上传回调!Nest.js助力实现无缝集成
前端
2022-11-13 17:37:13
通过 Nest.js 实现 OSS 签名直传上传回调
简介
Nest.js 是一款流行的基于 Node.js 的后端框架。阿里云对象存储服务 (OSS) 是一种可靠且经济高效的云存储解决方案。本文将指导您如何通过 Nest.js 实现 OSS 签名直传上传回调,从而在文件上传成功或失败时及时获取通知。
准备工作
开始之前,您需要:
- 阿里云 OSS 账户: 如果您还没有,请先注册一个。
- Nest.js 项目: 创建或使用现有的 Nest.js 项目。
- OSS SDK for Node.js: 在项目中安装
ali-oss
npm 包。
配置 OSS
- 登录阿里云 OSS 控制台,创建一个新存储空间 (Bucket)。
- 在存储空间设置页面,点击 回调规则 选项卡。
- 点击 添加回调规则 按钮。
- 填写以下信息:
- 回调 URL:填写 Nest.js 服务端的回调 URL。
- 事件类型:选择 文件上传成功 和 文件上传失败 。
- 回调参数:填写需要传递给 Nest.js 服务端的参数。
实现 Nest.js 回调控制器
在 Nest.js 项目中,创建一个新的控制器来处理 OSS 的回调请求。
import { Controller, Post, Body } from '@nestjs/common';
@Controller('oss-callback')
export class OssCallbackController {
@Post()
async callback(@Body() body: any) {
console.log(body);
}
}
启动 Nest.js 服务端
使用以下命令启动 Nest.js 服务端:
npm run start
测试 OSS 回调
使用 OSS SDK for Node.js 上传一个文件到 OSS:
const OSS = require('ali-oss');
const client = new OSS({
region: 'oss-cn-hangzhou',
accessKeyId: 'your-access-key-id',
accessKeySecret: 'your-access-key-secret',
bucket: 'your-bucket-name',
});
const result = await client.put('test.txt', 'Hello World');
console.log(result);
上传成功后,OSS 将向 Nest.js 服务端发送回调请求。服务端将打印回调请求的内容。
{
"bucket": "your-bucket-name",
"name": "test.txt",
"size": 11,
"mimeType": "text/plain",
"md5": "1234567890abcdef",
"crc64": "1234567890abcdef",
"eventTime": "2023-03-08T12:00:00Z"
}
使用回调信息
通过回调请求,您可以实时获取文件上传信息,例如:
- 文件名
- 文件大小
- 文件类型
- 上传时间
您可以利用这些信息执行各种操作,例如:
- 实时监控文件上传状态: 了解文件上传是否成功或失败。
- 处理上传后的文件: 将文件保存到数据库、发送电子邮件通知等。
- 与其他系统集成: 将 OSS 与其他系统(如 CRM、ERP)集成,实现数据同步和处理。
常见问题解答
-
如何自定义回调 URL?
在 OSS 控制台的 回调规则 设置中,您可以填写您自己的回调 URL。
-
如何处理上传失败的回调?
您可以在
oss-callback
控制器中编写自定义逻辑来处理上传失败的回调。 -
OSS 支持哪些事件类型?
OSS 支持的文件事件类型包括:
- 文件上传成功
- 文件上传失败
- 文件复制成功
- 文件复制失败
- 文件删除成功
- 文件删除失败
-
如何更改回调参数?
您可以通过修改 OSS 控制台中的 回调规则 设置来更改回调参数。
-
为什么我没有收到回调请求?
- 检查您的 OSS 回调规则是否正确配置。
- 检查您的 Nest.js 服务端是否正在运行并监听回调 URL。
- 确保您使用正确的 OSS 凭证。