掘金 后端 ( ) • 2024-06-08 13:30

使用Egg.js实现视频上传功能:获取阿里云VOD上传凭证

在本篇博客中,我们将继续使用Egg.js重构视频管理模块,主要实现视频上传接口。本教程将详细介绍如何配置路由、安装必要依赖、编写控制器并通过Postman验证接口。通过学习,你将能够掌握在Egg.js中集成阿里云VOD服务的关键步骤。

步骤一:配置路由

首先,我们需要在app/router.js文件中配置新路由,以便能够处理获取视频上传凭证的请求。

/**
 * @param {Egg.Application} app - egg application
 */
module.exports = app => {
  const { router, controller } = app;
  const auth = app.middleware.auth;
  // 视频管理
  router.get('/video/getVod', auth, controller.vod.getVod);
}

步骤二:安装阿里云VOD依赖

在项目根目录下运行以下命令安装阿里云的VOD SDK。

npm install @alicloud/pop-core --save

步骤三:创建控制器

接下来,在app/controller目录下创建一个名为vod.js的新文件,用于处理视频上传凭证的获取逻辑。

const Controller = require('egg').Controller;
const RPCClient = require('@alicloud/pop-core').RPCClient;

class VodController extends Controller {
  async vodClient() {
    const regionId = 'cn-shanghai'; // 点播服务接入地域
    let client;
    try {
      client = new RPCClient({
        accessKeyId: 'yourKeyID',
        accessKeySecret: 'yourSecret',
        endpoint: `http://vod.${regionId}.aliyuncs.com`,
        apiVersion: '2017-03-21'
      });
    } catch (error) {
      console.log('Error initializing VOD client:', error);
    }
    return client;
  }

  async getVod() {
    const query = this.ctx.query;
    this.ctx.validate({
      title: { type: 'string' },
      fileName: { type: 'string' }
    }, query);
    let client = await this.vodClient();
    this.ctx.body = await client.request('CreateUploadVideo', {
      Title: query.title,
      FileName: query.fileName
    }, {});
  }
}

module.exports = VodController;

步骤四:通过Postman验证接口

配置完成后,我们可以使用Postman来验证接口是否正常工作。发送GET请求到/video/getVod,并在请求参数中包含titlefileName。如果配置正确,你将会在阿里云后台看到视频上传任务已创建,并成功获取上传凭证。

总结

通过本次教程,我们学习了如何在Egg.js中实现视频上传功能,具体包括配置路由、安装阿里云VOD依赖、编写控制器以及通过Postman验证接口。这些步骤帮助我们成功获取了阿里云的视频上传凭证,使客户端能够顺利上传视频。