课程管理-添加小节上传视频(后端) | 学习笔记

本文涉及的产品
视频点播 VOD,流量+存储+转码
简介: 简介:快速学习课程管理-添加小节上传视频(后端)

开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot):课程管理-添加小节上传视频(后端)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/667/detail/11405


课程管理-添加小节上传视频(后端)


内容介绍:

一、引入依赖

二、创建 application 配置文件

三、创建启动类

四、创建 controller service

(1)Controller

(2)Service

把前端和后端的服务整合起来 做一个分析,在后面操作的时候,需要把前端后端都启动。启动之后登陆添加课程中首先第一步,加课程的基本信息,随便添加,再加上分类,要不在课程大纲里可以添加一个章节123,添加小节。

增加课时标题第一节 Java 入门语法,里面课时排序1,里面有一个上传视频,所以在添加课时,添加小节的时候 可以实现一个视频上传的功能,可以将视频传入到阿里中去,不是存视频的地址,而是保存视频上传的 ID 上传之后会返回 ID,所以把ID 保存,根据可以得到凭证或者地址等相关信息。

先写接口,在整合前端,把前端写出来。首先 接口先完成,Service vod 中进行开发,把视频部分全部写入 vod 中。

 

一、引入依赖

版本已经知道,在 vod 的子模块中 把依赖直接引进来,然后在课件中直接复制。

有一个细节,他的版本不能乱写。版本有相关的对应关系,vod的版本不能乱对应,可以到官网上查询对应的版本,引入依赖,依赖中的位置不同的版本。

 

二、创建application配置文件

D的 resource 里面有一个application properties 文件,然后把文件中的配置复制过来,他的内容中第一个是服务端口号,vod 现在变成8003,下面有他的 ID 和密钥,复制 ID 和密钥进行使用。

下面创建代码,Java 里面建一个包,Com. atguigu.vod,完成之后先创建一个启动类,比如叫 vodapplication,启动类的上面添加一个注解 是springbootapplication,

里面有一个 DataSourceAutoConfiguration. class,因为在 vod 中只是做视频的操作,并没有操作数据库,数据库在 abo 中,所以没有引入数据库的位置,有可能会报错。

这个代码就是默认不去做数据库的操作,引入依赖 加完之后,包括自动填充 加上一个扫描规则,这是关于启动类的创建。

 

三、创建启动类

SpringBootApplication(exclude= DataSourceAut. class

eComponentScan(basePackages =("com. atguig)

public class VodApplication

public static void main(String[]args)

SpringApplication. run(VodApplication. class, args):

四、 创建 controller service

(1)Controller

@RestController

@RequestMapping("/eduvod/video") public class VodController{

}

首先建一个包创建 control,名字叫 vodcontrol,在上面加上一个注解,

二个是 request mapping 指定路径,路径指定的名字叫 eduvod/video,之后创建service,先来一个包,有一个 interface 这样的接口 叫 vod service,后写上实现类vod servic,在直接实现接口,别忘在 service 上面加上注解,最后在 control 里面把方法写一下,方法就是上传视频的方法,或者上传到阿里云的方法。

上传提交的方式都是 post 提交,写一个 post 名字,最后 return 一个值,不要报错,因为现在需要做上传视频,在添加小节的位置,需要传入本地视频。

在方法中做到的第一部分,需要获取上传的文件,Multiplefile 获得上传文件,过程都写到 service 中 加一个 private 等,通过 service 就可以把功能实现。

在里面把文件传过来,传视频之后会返回视频 ID,最后把 ID 需要加到数据表中。

∥上传视频到阿里云

EPostMapping ("uploadAlyivideo")

public R uploadAlyiVideo(MultipartFile file){

/返回上传视频id

String videold= vodService. uploadvideoAly(file):

return R. ok() data("videoId", videoId)

(2)Service

写完之后写 service ,先创建一个接口。

来到实现内容,实现出来,找到官方代码进行实现,之前用本地文件上传接口,用其他的也可以,网络流不合适,文件流也不合适,流式上传进行实现,这个代码把功能写出来,直接复制。

里面的注释去掉,保留最基本的结构,手动引入依赖,引入之后需要传入几个参数,按照之前写过的方式读配置文件,一个和第二个是 ID 和密钥,Inputstream 是上传文件 输入流,Filename 是上传文件原始名称,title 是上传里面显示的名称,流必须要有,现在是这几个重要的参数。

下面的结构一样,直接调用方法,通过 response 得到视频 ID。跟增加一个变量叫做video ID,在里面做一个赋值,不影响上传。

把 video ID 做一个 return 这样方法和结构都显示出来了,先写ID和密钥的参数,用之前的方式,用 Service 的注解读取配置文件,再写一个常量,向里面做一个赋值。

写一个包,叫做 utils,梦见一个工具类 叫做 constant VodUtils,之后实现接口Init,在类上面加上注解,县里面的方法,实现之后,通过注解读取刚才配置文件中的内容 ID 和密钥。

一个是 too string 第二个是密钥,在注解里面加上表达式,把名字复制过来,第二个名字密钥,之后加上常量,做赋值即可。

这样就把工具类完成了:

VodServicelmpl java ConstantPropertiesUtijava Constan

eValue("${aliyun. vod. file. keyid]")

private String keyid:

EValue ("{aliyun. vod. file. keysecret}")

private String keysecret:

public static String ACCESS KEY SECRET:

public static String ACCESS_KEY_ ID:

cOverride

public void afterPropertiesSet() throws Exception

ACCESS KEY ID keyid:

ACCESS KEY SECRET keysecret;

然后把值再用一下,第一个值取里面的 ID,第二个取密钥,之后把里面的值定义一下。

在 file 里面有他的实际名字,流的位置有异常,加上 catch,捕获 exception。

名称可以和 fire name 起一个名称,这名称可能叫做01.mp4,现在想直接取名称,不带后缀值,上01,不带 mp4。根据点的位置做一个截取,方法很简单,直接复制。

用 substring 做个截取,文件名字可以这么写,得到最后一个点的位置 得到01.03.09的值,title 就写这个,这是几个参数,最终上传接口完成,然后做一个测试。

现在接口完成,最后做一个最终的测试,看一下效果,加上注解,演示跨域,启动服务器测试。

//01.03.09.mp4

String fileName=filegetOriginalFilenameO;//title:上传之后显示名称

String title=fileName.substring(o,fileName.lastIndex0f(."))//inputStream:上传文件输入流

InputStream inputStream=file.getInputStream));

UploadStreamRequest request=new UploadStreamRequest

ConstantVodUtils.ACCESS KEYID,ConstantVodUtils. ACCESS KEY SECRET title,fileName, inputStream);

UploadVideoImpl uploader=new UploadVideoImpl())

UploadStreamResponseresponse =uploader.uploadStream(request)

String videoId=null;

if(responseisSuccess()){

videoId=response.getVideoId(;

else {

videoId =response. getVideoId();

return videoId;

}

相关文章
|
前端开发
前端学习笔记202305学习笔记第二十二天-登录页进阶验证2
前端学习笔记202305学习笔记第二十二天-登录页进阶验证2
59 0
|
前端开发
前端学习笔记202305学习笔记第二十二天-登录页进阶验证1
前端学习笔记202305学习笔记第二十二天-登录页进阶验证1
47 0
|
存储 编解码 前端开发
谷粒学院(十一)课程最终发布 | 课程列表 | 阿里云视频点播服务 | 小节实现视频上传(二)
谷粒学院(十一)课程最终发布 | 课程列表 | 阿里云视频点播服务 | 小节实现视频上传
谷粒学院(十一)课程最终发布 | 课程列表 | 阿里云视频点播服务 | 小节实现视频上传(二)
|
前端开发 JavaScript API
谷粒学院(十一)课程最终发布 | 课程列表 | 阿里云视频点播服务 | 小节实现视频上传(三)
谷粒学院(十一)课程最终发布 | 课程列表 | 阿里云视频点播服务 | 小节实现视频上传(三)
谷粒学院(十一)课程最终发布 | 课程列表 | 阿里云视频点播服务 | 小节实现视频上传(三)
|
XML SQL 前端开发
谷粒学院(十一)课程最终发布 | 课程列表 | 阿里云视频点播服务 | 小节实现视频上传(一)
谷粒学院(十一)课程最终发布 | 课程列表 | 阿里云视频点播服务 | 小节实现视频上传
谷粒学院(十一)课程最终发布 | 课程列表 | 阿里云视频点播服务 | 小节实现视频上传(一)
|
前端开发 数据建模 应用服务中间件
课程管理-添加小节上传视频(前端) | 学习笔记
简介:快速学习课程管理-添加小节上传视频(前端)
218 0
课程管理-添加小节上传视频(前端) | 学习笔记
|
存储 前端开发 数据库
课程管理-添加小节上传视频(完善) | 学习笔记
简介:快速学习课程管理-添加小节上传视频(完善)
课程管理-添加小节上传视频(完善) | 学习笔记
|
前端开发 JavaScript 数据库
课程管理-章节后端接口开发 | 学习笔记
简介:快速学习课程管理-章节后端接口开发
150 0
课程管理-章节后端接口开发 | 学习笔记
|
前端开发 数据库 开发者
课程管理-修改课程信息(后端) | 学习笔记
简介:快速学习课程管理-修改课程信息(后端)
134 0
课程管理-修改课程信息(后端) | 学习笔记
|
存储 Java 对象存储
讲师管理-上传讲师头像(后端接口实现) | 学习笔记
快速学习讲师管理-上传讲师头像(后端接口实现)
讲师管理-上传讲师头像(后端接口实现) | 学习笔记