开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot):课程管理-删除视频接口】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/667/detail/11410
课程管理-删除视频接口
目录:
一、 页面完成
二、 接口部分
一、 页面完成
第一个功能就是当我们上传完视频之后,点击上传视频后面的×号,就能把我们上传的视频删掉,同时阿里云中的视频也会消失。
这个功能要怎么做?
演示示例:
首先,打开 element,找到组件,找到上传组件 upload,此时我们可以看到“点击上传”,我们可以看到,他和我们用的组件一样,当我们点击上传时,我们就可以上传一个文件,在传完文件之后,我们可以看到,在每个文件后面,有一个×号,
此时,我们要的效果是,当我们点击×,这个视频被删掉。
接下来,当我们点击×号时,我们可以发现,他弹出一个确认框
当我们点击确定的时候,这个视频就被删掉了;如果点取消,就什么都不做,这就是我们要做到的效果。
对此,我们需要做个实践:首先要先在页面中把页面的效果写出来,然后我们再写它的接口部分。
在页面中找到 chapter 页面上传小节的部分,
<!- 添加和修改课时表单 -->
<el-dialog:ivisible.sync-"dialogVideoFormVisible"title-"添加课时">
<el-form : model="video" label-width="120px">
<el-form-item label="课时标题">
<el-input v-model="video.title"/>
</el-form-item>
<el-form-iten label-"课时排序">
在这里,我们找到上传组件,
<el-upload
:on-success-"handleVodUploadSuccess"
:on-remove="handleVodRemove"
:before-remove="beforeVodRemove"
:on-exceed="handleUploadExceed"
:file-list-"fileList"
:action-"BASE_ API+"/eduvod/video/uploadAlvivideo""
:limit="1"
class="upload-demo">
<el-button size="small" type="primary">上传视频</el-button>
<el-tooltip placement "right-end",
<div slot="content">最大支持1G,<br>
支持3GP、ASF、AVI、DAT、DV、FLV、F4v、<br>
GIF、M2T、M4V、MJ2、MJPEG、MKV、MOV、MP4、<br>
MPE、MPG、MPEG、MTS、OGG、QT、RM、RMVB、<br> SWF、TS、VOB、WMV、WEBM 等视频格式上传<div>
<i class "el-icon-question"">
<el-tooltip>
</el-upload>
</el-form-item>
上面的这个组件和下图的组件其实是一个组件,用的是一个。
那这个组件是怎么做到的?
我们之前学过,handleVodUploadSuccess 是上传成功,handleUploadExceed 这个是上传之前,然后我们可以看到,里边还有下面两种方法:
:on-remove="handleVodRemove"
:before-remove="beforeVodRemove"
我们现在用的就是这两种方法
(1)点击×的时候,他就会调用这种方法,在这个方法中,我们可以写确认框,将确认框写入这个 beforeVodRemove中;
(2)当我们点击确认的时候,这个时候就会调用接口,把视频删掉。所以我们现在用的就是上面的两种方法。
写在下面:
methods:{
//点击确定会调用的方法
handleVodRemove(){
//调用接口的删除视频的方法
我们先来到页面中,点击添加小节,然后上传一个视频,
等视频上传之后,点击×号,看是否会弹出确认框,
可以看到,确认框是可以弹出的,然后我们点击取消,使用我们调用方法,将接口写出来。
}
第二种方法如上,方法名字是可以改变的,但等号左边的是固定的,我们需要看看示例代码,找到 handleVodRemove 方法,调用接口实现,
//点击×号会调用这个方法
beforeVodRemove(file, fileList){
return this.$confirm(`确定移除 ${ file.name }?`);
通过 file 得到文件名称
}
第一个方法如上,看示例代码得到 beforeVodRemove 方法,
beforeRemove(file, fileList){
他有两个参数,file代表文件,fileList 是文件列表,直接将代码复制过去。
return this.$confirm(`确定移除 ${ file.name }?`);
//上传视频成功调用的方法
handleVodUploadSuccess(response, file, fileList){
//上传视频id赋值
this.video.videoSourceld =response.data.videoId
//上传视频名称赋值
this.video.videoOriginalName= file.name
},
handleUploadExceed(){
this.$messagewarning("想要重新上传视频,请先删除已上传的视频')}
二、接口部分(删除视频的接口)
删除视频跟我们之前删的一样,之前在表里边删除数据,是根据 id 删除的,而现在也同样,因为视频有视频 id ,所以我们也要根据视频 id 删除视频,接下来,在接口处写一下方法。找到 vodcontral,写到 service_vod 中。
//根据视频 id 删除阿里云视频
删除方法一般用的 deleteMapping(),括号中传入视频的 id
deleteMapping(“removealiyunvideo/(id)“)
public R removealiyunvideo(pathvariable string id){
在方法中找得到视频id,加上一个注解,调阿里云中的一个过程并删掉,先给一个值,看一下阿里云的文档,在阿里云视频点播文档中查找,有一个删除云端视频
这个是删除阿里云文档的位置。
然后我们通过控制台,找到文档sdk,在服务端sdk中找到Javasdk,这里有一个媒资管理,点开我们会看到功能目录,找到删除视频的功能,进入我们可以看到是如何做到的。
跟之前的写法是差不多的,包括之前获取视频地址是一致的,我们可以看到是怎么做的,
第一步是创建初始化对象
第二步是创建 request 和对象,这里的 request 和其他的不一样,deleterequest,所以创建 request,在 request 中设置他的 id,可以有多个,不过我们目前只有一个 id,如果是多个 id,用逗号隔开
最后调用方法找我们的结果,这样的话我们的视频就可以删掉。
新建一个 utils,将 Java 中的 initobject 复制粘贴,放入到如下位置,
这个类的内容如下:
这个类中有一个静态方法,就是策划一个对象,我们直接传 id 密钥 accesskeyid 包括 cn-shanghai,做完第一部分,来到代码中,写下具体部分。
Try {
//初始化对象
DefaultAcsClientClient=Initialvodclient. Initvodclient(constantutils,ACCESS_KEY_ID,constantutils,ACCESS_KEY_ID) var
使用 Initialvodclient 类中的方法,方法中有两个值,之前我们将他们都放入了配置文件中,并且我们还写了一个工具类,所以我们直接用工具类去获取它的值,就是constantutils,ACCESS_KEY_ID,这是第一步。
//创建删除视频 request 对象
DeleteVideoRequest request = new DeleteVideoRequest():
//想 request 设置视频 id
request.setVideolds(id);
//调用初始化对象的方法实现删除
client.getAcsResponse(request);
Return r ok():
它也会返回 response,但是这个对于我们来说没有什么用,不需要什么结果,我们直接调用方法就可以删除。正常的话就直接输出。
}catch(exception e){ 捕获 exception,
按照我们的步骤写下
e.printStackTrace();
throw new GuliException(20001,"删除视频失败”):
如果我们删除失败,将异常写出,再抛出一个异常,这是我们写的一个接口,最后,我们就按照阿里云这个完成了视频删除。
在页面中调用这个接口,实现最终功能。