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

简介: 简介:快速学习课程管理-添加小节上传视频(前端)

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

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


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


目录:

一、前端整合添加小节上传视频

二、问题演示


一、前端整合添加小节上传视频

在添加小节基本信息之后,可以上传一个视频到阿里云中,看它的实际需求,目前在线教育就是这样一种方式,找一门课程,找到之后,我们可以看到这里有个目录,就是我们所说的大纲,有它的章节和课时,当我们点击章节的时候,当时显示的是课时,章节中没有视频,而我点击某一个课时,或者小节的时候,它就做出了播放,所以我们每个小节中都有一个对应的视频,我们现在添加课时,或者小节,最后上传视频,在播放的时候,点击课时就能做到播放,跟这个效果是类似的,我们后面会实现出来。

在上传这里要添加一个上传的按钮,然后做上传,而上传按钮我们可以到 mui 中找到相关组件,因为里边有很多组件,那我们就找个组件,组件里面都有,从课件中直接找到,

有个<el-upload,是个上传组件,将组件复制到页面中去,

kel-form-item label="上传视频">

<el-upload

:on-success="handleVodUploadSuccess"

:on-remove-"handleVodRemove"

:before-remove="beforeVodRemove"

:on-exceed="handleUploadExceed"

:file-list-"fileList"

:action="BASE_API+"/admin/vod/video/upload'"

: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、WOB、WMV、WEBM 等视频格式上传

<div><i class="el-icon-question"/>

</el-tooltip>

</el-upload>

</el-form-item>

来到页面中,因为我们的页面是在添加小节的地方,所以我们找到capter页面,打开,找到弹框的地方,找到课时,

找到一个<!-- TODO --> ,所以将

<el-form-item label="上传视频">

<!-- TODO -->

</el-form-item>

复制到上传视频部分,组件复制之后,先看一下再做修改,再来看效果,组件是从mui 中直接复制过来的,所以会多一些步骤,

在<el-upload 中,handleVodUploadSuccess 表示上传成功,remove-"handleVodRemove"是删除

before-remove="beforeVodRemove"是删除之前,

"handleUploadExceed"是上传之前的操作,比如我们设置它的大小包括类型,"fileList"是文件列表,

:on-remove-"handleVodRemove"

:before-remove="beforeVodRemove"

打开 element,找到组件,找一个上传组件,说一下这些组件是什么意思,

:on-success="handleVodUploadSuccess"是上传成功的方法,

当我们在上传视频的时候,下面列出了文件,这个文件是:file-list-"fileList",

是文件列表,除了它之外,在文件后面还有个×号,点击它的时候我们就能删除了,而我们点击×号就表示调用"beforeVodRemove",表示删除之前,而删除之前我们要干什么,点击确定的时候,它就会调用"handleVodRemove"这个方法,就是上传成功之后,在原列表中删除把文件删掉,就是我们看到点×弹出个框,点击确定删掉,这就是两个删除方法。

除此之外,还有一个 action,表示请求的后端的接口的地址,这个我们一会改,还有一个limit,允许上传文件的数量,写一个1,就默认一个文件,class="upload-demo">是一个样式,上传视频是一个按钮,

是一个提示信息,给用户一个很好的提示

:on-success="handleVodUploadSuccess"

:on-remove="handleVodRemove"

:before-remove="beforeVodRemove"

:on-exceed="handleUploadExceed"

:file-list="fileList"

:action="BASE_API+“/eduvod/video/ uploadaliyunvideo”

:limit="1"

class="upload-demo">

包括上传成功,删除,删除之前,以及设置,文件列表和API,我们在这里做一个说明,这里我们需要先定几个值,看看它的效果是什么样的,值主要是这个BASE-API,包括fileist,我们都给它们做个定义,直接复制,

fileList: [],//上传文件列表

BASE_API:process.env.BASE_API // 接口 API 地址

将初始值放入我们的 date 中,

dialogChapterFormVisible:false,  

//章节弹框 dialogVideoFormVisible:false,//小节弹框

fileList:[],//上传文件列表

BASE API:process.env.BASEAPI // 接口API地址

},

然后初始值里面有两个,一个是 fileList,一个是 BASE API,fileList 就是文件列表,BASE API 取到你的地址,所以我们现在就写出来了,把路径改一下,改成我们现在的接口路径,

路径是 vod 中的/eduvod/video/,

复制改一下,

将/admin/vod/video/upload'"改为/eduvod/video/upload,后面加上方法名字,uploadaliyunvideo,将 upload 这个改为这个,所以我们现在组件就整合出来了,整合之后,打开页面,进入该页面,

点击添加小节,可以看到:

image.png

这里直接点击上传视频,而我们代码中的话就是自动上传,就是现在随便选择一个文件,点击打开,文件就会自动上传,不需要点击其它按钮,

image.png

这就是一种自动上传方式,然后我们返回页面中看,这里有一个问号,

我们可以看到,这一步就是提示信息,也就是我们先写到的下面部分,所以做一个提示,

所以我们现在就把组件整合出来了,然后这里有几个值和方法在下面做一个定义,然后最终做一个实现,

//成功回调

handleVodUploadSuccess(response, file, fileList){

this.video.videoSourceId=response.data.videoId

},

//视图上传多于一个视频

handleUploadExceed(files,fileList){

this.$message.warning("想要重新上传视频,请先删除已上传的视频")},

此时我们来写一下,第一个是上传成功之后的方法,

methods:{

//上传视频成功调用的方法

handleVodUploadSuccess( response file filelist){

this.video.videosourceid=response.date.videoid

添加一个视频id,接着把 videoid 复制给 video 的对象,赋值之后,我们就可以加到数据库中,这就是我们的一个基本操作,上传之前就简单做个提示,主要是上传之后得到视频 id,给 video,通过它然后可以加到数据库,所以这是一个前端的整合。

},

另外还有一种方法,是上传之前的方法,就是 handleUploadExceed,将这个写一下,删除我们后面再写,因为里面有 videosourceid,那我们做一个赋值,

handleUploadExceed(){

this.$message.warning("想要重新上传视频,请先删除已上传的视频')

上传之前我们可以做一些设置,简单写一些提示,

this.$message.warning("想要重新上传视频,请先删除已上传的视频'),

image.png

在上传成功之后,里边有个参数,是 response,

通过这个我们就能得到接口数据,和之前的写法一样,还有其它值,都可以写,但我们目前只要用 response,把 response file filelist 放入。

}

点击确定,看到小节添加了,然后我们去表里看看小节有没有加进去,

image.png

可以看到第一节,删除视频,可以看到视频id,返回id把它加进去了,为686D7,这样我们就可以看到这个:

image.png

另外两个方法,一个之前,一个成功,之前我们就简单来个提示,主要是成功,成功之后,需要把视频 id 得到,然后给我们的 video对象加到数据库,这就是前端的整合过程。

 

二、问题演示

1、需要在 nginx 配置8003端口规则

我们现在使用的是8003端口,所以我们需要在nginx配置8003端口规则,默认是没有的。

找到nginx,cnf,打开配置文件,在这里找到之前加的/eduvod/,8003,

location ~/eduvod/ {

proxy pass http://localhost:8003;

这是第一个,加上一个端口访问规则,就是当你路径中,包含/eduvod/都到8003中去,要注意记得配置。

2、nginx 支持上传大小有限制的

现在我们在访问的不是通过8003,是先通过9001,因为nginx支持上传大小也是有限制的,配置先给它注入,加上配置,重启nginx,关掉不好用,所以我们要找到路径,打开,使用命令先把它停掉,

image.png

重新启动,将结果再试一遍,默认是没有配置的,

client max body size 1024m;

进行测试,来到页面中,刷新,刷新之后还是做一个上传,点击添加小节,弹出框。

里面传一个本地的视频,点击打开,我们可以发现问题,此时在页面中没有任何显示,其实它有显示,只不过一闪就消失了,但是在下面出现了错误,

这个问题是由 nginx 出现的,因为我们先访到 nginx,由 nginx 再到我们的8003,这里清楚地告诉我们这个问题,状态码为413,提示我们请求体过大,就是说我们上传的大小超过了 nginx,就不让传过去,报了一个错误,表示请求体过大,所以出现了错误,是一个错误提示,因为 nginx 支持上传大小有限制的。

解决方式就是在 nginx 的配置文件中,添加一个大小设置,这就是它的解决方案,在我的课件中也 写出来了,不需要记忆,直接复制就可以了。

client_max_body_size 1024m;

将这段话应用,找到nginx的配置文件,加到 HTTP 里面就可以了,

http {

include  mime.types;

default type     application/octet-stream;

client max body size 1024m;

设置成1024m,就是1个g大小,这样只要我们上传的视频在这个区间,那我们的视频就可以上传了,加上之后,我们需要重启一下,

在阿里云中能看到刚上传的视频,时间是符合的,可以做到,最后点击确定,数据就能加到我们的数据库中,这样就完成了,在数据库中可以看到新加的数据,

相关文章
|
6月前
|
Web App开发 移动开发 JavaScript
【前端用法】HTML5 Video标签如何屏蔽右键视频另存为的js代码以及如何禁用浏览器控件,Video 禁止鼠标右键下载
【前端用法】HTML5 Video标签如何屏蔽右键视频另存为的js代码以及如何禁用浏览器控件,Video 禁止鼠标右键下载
175 0
|
1月前
|
前端开发
前端input上传文件获取视频或音频的时长
前端input上传文件获取视频或音频的时长
108 0
|
9天前
|
存储 小程序 API
对象存储OSS产品常见问题之前端直传视频获取视频的长度获得多少秒如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
26 0
|
1月前
|
资源调度 前端开发 JavaScript
推荐一款可以自动创建视频的前端Ract框架
推荐一款可以自动创建视频的前端Ract框架
|
1月前
|
前端开发
前端实现视频或者图片直链下载
前端实现视频或者图片直链下载
55 0
|
1月前
|
前端开发
前端播放第三方外链视频报403 forbidden的原因及解决方案
前端播放第三方外链视频报403 forbidden的原因及解决方案
63 0
|
6月前
|
前端开发 JavaScript
【前端用法】前端JS获取视频时长的写法
【前端用法】前端JS获取视频时长的写法
84 0
|
3月前
|
前端开发 JavaScript 应用服务中间件
WEB前端有必要学会docker吗?0基础-45分钟带你学会(包含视频笔记案例源代码)
WEB前端有必要学会docker吗?0基础-45分钟带你学会(包含视频笔记案例源代码)
30 0
|
8月前
|
Web App开发 前端开发 JavaScript
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-fiber解决了什么问题
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-fiber解决了什么问题
95 0
|
8月前
|
前端开发 定位技术
前端学习笔记202305学习笔记第二十三天-地图单线程配置
前端学习笔记202305学习笔记第二十三天-地图单线程配置
64 0
前端学习笔记202305学习笔记第二十三天-地图单线程配置