讲师管理-上传讲师头像(前端实现) | 学习笔记

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 快速学习讲师管理-上传讲师头像(前端实现)

开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot)讲师管理-上传讲师头像(前端实现)学习笔记,与课程紧密连接,让用户快速学习知识。

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


讲师管理-上传讲师头像(前端实现)


内容简介

一、添加讲师实现上传头像前端整合

二、在添加讲师页面,创建上传组件,实现上传功能

三、添加讲师页面使用这个复制上传组件

四、使用组件

五、引入组件和声明组件

六、修改上传接口地址

七、编写 close 方法和上传成功的方法


一、添加讲师实现上传头像前端整合

这个过程比较简单,主要用到了 ui 中的上传组件。都是固定的组件中的东西,直接复制修改就可以,接下来进行复制整合。

在添加讲师表单页面中加一个上传组件,让用户能上传头像。


二、在添加讲师页面,创建上传组件,实现上传功能

组件使用 element-ui 组件就可以实现。直接在之前的 element 网站寻找是可以的,现在为了样式更加美观,寻找第三方组件

寻找组件:在资源中,有前端相关资源中有俩个压缩文件。分别为171kb 和921kb,921kb有更强大功能,171kb 为简约功能,所以921kb 中有更美观的上传样式,可以在里面寻找组件进行复制。

现在到源码里面找到组件,复制到前端项目 src(components里面)

到源码中复制,找到当前的项目,有 src 把它直接粘贴。

复制之后的效果:

image.png


三、添加讲师页面使用这个复制上传组件

views 下 edu 中有个 sava.vue 组件,

从课件复制上传组件代码(这个代码不需要敲,是固定的,直接复制改就可以)

讲师头像:TODO 的意思:去做

在以后的公司中,如果出现这个 TODO 这个单词,证明这个代码是需要完善或修改的。

复制< !—

v-show :是否显示上传组件

: key:类似于 id,如果一个页面多个图片上传控件,可以做区分: url:后台上传的 url地址

@close:关闭上传组件

@crop-upload-success : 上传成功后的回调-->

<image-cropper

v-show=""imagecropperShawv"

:width=300”

: height="300""

:key="imagecropperKey"

: url=""BASE_API+" f admin/oss/file/upload"

"field="file”"

close="close"

@crop-upload-success="cropSuccess" />

<el-form-item是表单项

上述内容解释:

image 表示头像,它要显示讲师的头像

button 按钮是更改头像,通过一个框来上传

<image-cropper

v-show=""imagecropperShawv"

:width=300”

: height="300""

:key="imagecropperKey"

: url=""BASE_API+" f admin/oss/file/upload"

"field="file”"

close="close"

@crop-upload-success="cropSuccess" />

上述是真正要上传的内容,阿贾克斯默认不能直接上传文件,不支持直接创文件,这种上传不是阿贾克斯,而是列为一种提交表单方式。

v-show:弹框。这个值=true点击更换头像上述内容就会弹出来。

width:宽

height:高

key:标签中的id属性

url:表单提交的路径

field:name 值<input type="file" name="file" />表示文件上传输入项,

组件的两种方法:close(关闭弹框的方法)

crop-upload-success(上传成功)

先在里面写几个值,查看效果如何,

"BASE_API+" / admin/oss/file/upload’在里面要写请求接口的地址,比如http://localhouse 这个接口地址,因为 Loaclhouse 都被写在了http: i i localhost:9001"",所以取下API端口号:BASE_API

avatar:

},

//上传弹框组件是否显示

imagec ropperShow:false,

imagecropperKey:0,//上传组件 key 值

BASE_API:process.env.BASE_API//获取dev.env,js里面地址。

saveBtnDisabled:false//保存按钮是否禁用.

以上就是获取到了一些初始值的数据,最后将closecropsuccess方法

methods:{

c lose() {//关闭上传弹框的方法

},

//上传成功方法

cropSuccess()

在组件中等于号左边的内容是固定的,右边的值可以修改。

最后查看页面效果如何,再修改功能:

点击添加讲师,页面最下端有个更换头像,里面会有个圆圈显示头像。

组件位于components中的inagecropper和pathumb两个组件,

之后需要进行声明才能应用组件

export default {

c omponents: { ImageCropper,PanThumb },

现在基本的方法就有了只需要最后两个方法。

点击添加讲师,下面有个圆圈,圆圈的效果为左右移动,只不过现在没有上传,点击更换头像就会弹出一个框,在弹出的框中可以在本地选择一个图片,图片有原始的图片和变成头像之后的图片,也可以调节图片大小,点击保存,就可以上传,点击×之后就会调用close方法,点击保存之后就会调用cropsuccess方法。


四、使用组件

*data()定义变量和初始值

//上传弹框组件是否显示

imagecropperShow :false,

imagecropperKey:0,11上传组件 key 值

BASE_API;process.env.BASE_API,//获取 dev.env.js 里面地地址


五、引入组件和声明组件

引入组件:import ImageCropper from "@/ c omponents/ ImageCropper"import PanThumb from '@/ components/PanThumb'

声明组件:

export default {

c omponents: { ImageCropper,PanThumb },

按照这个过程把上传组件就整合到里面。


六、修改上传接口地址

image.png

Base_api 取得是 localhoost:9001这个不需要改变,在后面加上接口地址::ur1="BASE_API+ " / eduoss/fileoss"不修改就没有效果。

七、编写close方法和上传成功的方法

更换头像的时候弹出框,如何弹出框,当值等于fase的时候就弹出框,则当值等于fase 的时候就关闭框,

methods:{

c lose() { //关闭上传弹框的方法

this.imagec ropperShow=false

},

l/上传成功方法

cropSuccess(data) {

this.imagec ropperShow=false

//上传之后接口返回图片地址

This.teacher.avatar=data.url 将这个值赋值给 avatar

这个写法跟 response.data.url 类似

代码整合就完成了,第一个关闭弹框,第二个关闭弹框,之后将端口号赋值给 avatar

刷新,点击更换头像,弹出框,点击×关闭,随意上传一个图像如下图所示,可以随意调节图片大小,点击保存就可以上传头像,方框关闭了,但是图像保存了,样式也是我们选择的样式。

到 oss 管理控制台中查看上传的文件,点击 bucket 列表,文件管理,点击上传文件,根据时间可以找到我们上传的文件,主要是要上传到数据库,先随意填写讲师表单,点击保存后,来到表中。

下述内容中方框中的值为我们上传内容的地址,以上就是添加讲师上传功能。

image.png

注意:

我们上传图片的名字在上传地址中可以看到被修改,这是框架组件转换的,无论上传什么图片最后都会被转换成这个名字,因为上传图片可能会有中文名称就会产生问题,所以会全部转换成 file.Png.在课间中做地址时,可以写一个默认的图片,当不上传时,就可以使用默认的图片

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
6月前
|
XML 前端开发 JavaScript
前端图形学实战: 从零实现编辑器的图层管理面板和实时缩略图(vue3 + vite版)
前端图形学实战: 从零实现编辑器的图层管理面板和实时缩略图(vue3 + vite版)
106 0
|
30天前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
37 0
|
3月前
|
JavaScript 前端开发 程序员
后端程序员的前端必备-jQuery核心学习笔记
后端程序员的前端必备-jQuery核心学习笔记
58 13
|
5月前
|
前端开发 安全 JavaScript
前端工程化实战 - 日程管理
前端工程化实战 - 日程管理
44 0
|
6月前
|
JavaScript 前端开发
TypeScript 学习笔记(六):TypeScript 与前端框架的结合应用
笔记,进一步提升 TypeScript 编程技能。
76 1
|
5月前
|
资源调度 前端开发 JavaScript
前端工程化实践:Monorepo与Lerna管理
**前端工程化中,Monorepo和Lerna用于大型项目管理。Monorepo集纳所有项目,便于代码共享、版本控制和CI/CD。Lerna是Monorepo工具,管理多npm包,支持独立或共享版本。安装Lerna用`npm install --save-dev lerna`,初始化后可创建、管理包,通过`lerna bootstrap`、`lerna add`、`lerna publish`等命令协同工作。Lerna配置可在`lerna.json`,与CI/CD工具集成实现自动化。
68 0
|
6月前
|
存储 安全 前端开发
PHP医院安全不良事件管理系统源码(AEMS)前端vue2+element+后端laravel8不良事件上报与闭环管理
医院不良事件上报与管理系统结合现代医院管理思路,遵照PDCA全面质量循环管理方法而设计,并在多家大型三甲医院成熟运用。系统从事件上报、基于人、机、料、法 、环的RCA分析、事件整改、效果评估实现了结构化、标准化、智能化的管理和分析,满足医院可追溯化、全流程闭环管理要求,满足等级医院评审细则要求,大力提高医院不良事件上报的效率,保障事件分析的准确性,促进医疗安全的提高,避免同类事件再次发生,改善整个医院医疗安全,从而实现医院安全医疗的目标。
79 3
|
6月前
|
前端开发 开发者 UED
【Flutter前端技术开发专栏】Flutter中的图标、字体与样式管理
【4月更文挑战第30天】本文介绍了在Flutter中管理图标、字体和样式的做法。Flutter提供`Icons`类用于内置矢量图标,支持第三方图标库如FontAwesome。自定义字体可通过添加字体文件至`assets`目录并配置`pubspec.yaml`,然后使用`TextStyle`设置。借助`ThemeData`,开发者能统一管理应用主题样式,局部样式可覆盖全局。通过集中管理样式,提升代码复用性和应用一致性。
172 0
【Flutter前端技术开发专栏】Flutter中的图标、字体与样式管理
|
6月前
|
存储 JavaScript 前端开发
【Flutter 前端技术开发专栏】Flutter 中的状态管理框架(如 Provider、Redux 等)
【4月更文挑战第30天】本文探讨了 Flutter 开发中的状态管理,重点介绍了 Provider 和 Redux 两种框架。Provider 以其简单易用性适合初学者和小项目,而 Redux 则适用于大型复杂应用,保证状态一致性。此外,还提到了 Riverpod 和 BLoC 等其他框架。选择框架时要考虑项目规模、团队技术水平和个人偏好。文章通过购物车应用示例展示了不同框架的使用,并展望了状态管理框架的未来发展。
170 0
【Flutter 前端技术开发专栏】Flutter 中的状态管理框架(如 Provider、Redux 等)
|
6月前
|
JavaScript 前端开发 开发者
【Flutter前端技术开发专栏】Flutter中的Widget与状态管理
【4月更文挑战第30天】本文探讨了Flutter的Widget和状态管理。Widget是Flutter构建UI的基础,分为有状态和无状态两种。状态管理确保UI随应用状态变化更新,影响应用性能和可维护性。文章介绍了`setState`、`Provider`、`Riverpod`、`Bloc`和`Redux`等状态管理方法,并通过计数器应用展示了其实现。选择合适的状态管理策略对高效开发至关重要。
85 0
【Flutter前端技术开发专栏】Flutter中的Widget与状态管理