vue实现图片上传至oss,返回url插入数据库,最后在前端页面上回显图片

vue前端上传图像

写一个弹窗上传图片

上传图片的方式是oss,在上传之后将url存入数据库,下一步则是在列表上回显

<template><el-dialog:title="'新增'":visible.sync="dialogVisible":close-on-click-modal="false":before-close="handleClose"><el-form :model="dataForm" ref="dataForm"><el-form-item label="设备图像"><el-uploadclass="avatar-uploader":action="uploadUrl":headers="tokenInfo":show-file-list="false":on-success="handleAvatarSuccess":before-upload="beforeAvatarUpload"><img v-if="imageUrl" :src="imageUrl" class="avatar" /><i v-else class="el-icon-plus avatar-uploader-icon"></i></el-upload></el-form-item></el-form></el-dialog>
</template><script>
export default {data() {return {dataForm: {image: "",},dialogVisible: false,imageUrl:"",uploadUrl: this.$http.adornUrl("/tain/warn/ossUpload"),tokenInfo: {token: this.$cookie.get("token"),},};},methods: {handleAvatarSuccess(res, file) {// 在控制台输出服务器响应的内容console.log(res);// 使用浏览器的URL API创建一个表示文件对象的URL,并将其赋值给当前上下文的imageUrl属性// 在前端使用这个URL来显示上传的头像this.imageUrl = URL.createObjectURL(file.raw);// 正在更新一个表单数据对象,以包含新上传的头像的URthis.dataForm.image = res.url;},// beforeAvatarUpload:自定义函数// file:待上传的文件beforeAvatarUpload(file) {// 创建一个常量isJPG,检查传入file的类型,isJPG为true,否则为falseconst isJPG = file.type === "image/jpeg";// 创建一个常量isPNG,检查传入file的类型,isPNG为true,否则为falseconst isPNG = file.type === "image/png";// 创建一个常量isLt2M,检查传入文件大小是否夏雄安与2mb 字节转换为mb(兆字节)const isLt2M = file.size / 1024 / 1024 < 2;// 如果上传文件不是jpg或pngif (!(isJPG || isPNG)) {// 显示错误的提示信息,告诉用户'上传头像图片只能是 JPG 或者 png 格式!'this.$message.error("上传头像图片只能是 JPG 或者 png 格式!");}// 如果上传文件不小于2mbif (!isLt2M) {// 显示错误的提示信息,告诉用户'上传头像图片大小不能超过 2MB!'this.$message.error("上传头像图片大小不能超过 2MB!");}// 返回一个布尔值表示文件是否满足所有条件return (isJPG || isPNG) && isLt2M;},init() {this.dialogVisible = true;this.$nextTick(() => {// 新增或修改判断成功弹出后执行查询方法this.$refs["dataForm"].resetFields();});if (this.dataForm.image) {this.imageUrl = this.$http.adornUrl(this.dataForm.image);}//   this.$emit("refreshDataList");},},
};
</script><style>
/* 应用于所有.avatar-uploader类中的.el-upload子元素 */
.avatar-uploader .el-upload {/* 边框样式 */border: 1px dashed #d9d9d9;/* 边框圆角 将四个角的半径都设置为6像素 */border-radius: 6px;/* 鼠标指针在元素上时的样式 手形图标 */cursor: pointer;/* 元素的定位类型 relative相对定位 */position: relative;/* 元素的内容处理在其边界之外的部分 设置为“隐藏” */overflow: hidden;
}
/* 定义了一个当鼠标悬停在.avatar-uploader .el-upload元素上时的样式 */
/* hover 鼠标悬停 */
.avatar-uploader .el-upload:hover {/* 边框颜色 */border-color: #409eff;
}
/* 规则将应用于所有带有.avatar-uploader-icon类的元素 */
.avatar-uploader-icon {/* 字体大小为28像素 */font-size: 28px;/* 元素的颜色 */color: #8c939d;/* 宽度 */width: 178px;/* 高度 */height: 178px;/* 内边距 垂直居中文本 */line-height: 178px;/* 文本在元素内居中对齐 */text-align: center;
}
.avatar {/* 宽度 */width: 178px;/* 高度 */height: 178px;/* 显示类型为块级元素 独占一行 宽度默认为父元素的100% */display: block;
}
</style>

列表回显

使用卡槽

      <el-table-columnprop="image"header-align="center"align="center"label="设备图像"><template slot-scope="scope"><img style="width: 100px; height: 100px" :src="scope.row.image"></template></el-table-column>

后端oss上传的时候就插入数据库

    @Autowiredprivate AliOSSUtil aliOSSUtil;@Autowiredprivate ITainRecordService iTainRecordService;//oss@PostMapping("/ossUpload")public R ossUpload(MultipartFile file) throws IOException {String url = aliOSSUtil.upload(file);  // 返回文件的上传路径,访问这个url即可下载TainRecord record = new TainRecord();record.setImage(url);iTainRecordService.saveOrUpdate(record);return R.ok().put("url",url);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/709549.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不同类型的工业网关有何区别?

工业网关是一种用于连接工业设备和网络的关键设备&#xff0c;它能够将不同协议、不同传输速率的工业设备连接到网络上&#xff0c;实现数据的传输和共享。不同类型的工业网关之间存在一些区别&#xff0c;以下是一些常见的工业网关类型及其区别&#xff1a; 协议转换型工业网关…

上拉电阻与下拉电阻、电容的作用

上拉电阻与下拉电阻 在单片机电路中&#xff0c;上拉电阻和下拉电阻都是常见的电路元件&#xff0c;它们在数字电路设计中扮演着重要的角色。它们的作用如下&#xff1a; 1. **上拉电阻**&#xff1a; - **作用**&#xff1a;当一个引脚没有外部信号时&#xff0c;上拉电阻…

微调(Fine-tuning)技术概念

——微调&#xff0c;像化妆&#xff0c;一种“精细化、风格性调整”的人工美颜技能。 微调&#xff08;Fine-tuning&#xff09;是指在深度学习领域中&#xff0c;特别是针对预训练模型的一种训练策略。预先训练好的模型通常是在大规模无标注数据上通过自监督学习得到的&#…

【Micropython】I2C层次结构、I2C协议

文章目录 前言一、I2C的结构层次1.1 怎样在两个设备之间传输数据1.2 I2C如何传输数据1.3 硬件框图1.4 软件层次 二、IIC协议2.1 硬件连接2.2 I2C 总线的概念2.3 传输数据类比2.3 I2C信号2.4 I2C数据的含义 总结 前言 I2C&#xff08;Inter-Integrated Circuit&#xff09;是一…

【Redis】redis事务和发布订阅

Redis 事务 Redis 事务可以一次执行多个命令&#xff0c; 并且带有以下三个重要的特性&#xff1a; 批量操作在发送 EXEC 命令前被放入队列缓存。收到 EXEC 命令后进入事务执行&#xff0c;事务中任意命令执行失败&#xff0c;其余的命令依然被执行。在事务执行过程&#xff…

卸载云服务器上的 MySQL 数据库

执行以下命令以停止 MySQL 服务&#xff1a; sudo service mysql stop执行以下命令以彻底卸载 MySQL&#xff1a; sudo apt-get remove --purge mysql-server mysql-client mysql-common sudo apt-get autoremove sudo apt-get autoclean 这将删除 MySQL 数据库服务器、客…

C++设计模式——抽象工厂模式

文章目录 抽象工厂模式的主要组成部分抽象工厂模式的一个典型例子抽象工厂模式用于其他场景抽象工厂模式与其他设计模式结合使用 C 中的抽象工厂模式是一种创建型设计模式&#xff0c;它主要用于处理对象家族的创建&#xff0c;这些对象之间可能存在一定的关联关系或属于相同的…

国产航顺HK32F030M: HK32F030MJ4M6_SOP8资料

最小系统 参考资料 [1] 航顺MCU HK32F030MJ4M6-SOP8 各个文件夹简介&#xff1a; Boards&#xff1a;HK32F030xMF4P6开发板的BSP驱动代码。 Documents&#xff1a;HK32F030xMxx数据手册、用户手册、API手册以及HK32F030xMxx开发板原理图。 Package&#xff1a;HK32F030xMxx Ke…

React.FC详细解说

React.FC 是 React 中的一个泛型&#xff0c;用于定义函数式组件&#xff08;Functional Component&#xff09;。在 TypeScript 中&#xff0c;React.FC 可以帮助开发者进行类型推导&#xff0c;使得编写 React 组件更加方便。 React.FC 的定义如下&#xff1a; typescript复…

任务系统之API子任务

日常运维工作中有许多的任务要执行&#xff0c;例如项目发布/数据备份/定时巡检/证书更新/漏洞修复等等&#xff0c;大部分的任务都会有多个步骤共同完成&#xff0c;例如一个发布任务会有拉代码、编译、分发、通知等等步骤&#xff0c;而不同的任务可能还包含相同或相似的步骤…

PRL算法调控

伴随汽车电子技术发展&#xff0c;传统轮式车辆制动系统的气体或液体传输管路长&#xff0c;阀类原件多原有的真空助力系统无法兼顾车辆的再生制动功能&#xff0c;而再生制动功能是混合动力车辆是混动车辆最主要的市场优势之一&#xff0c;真空助力器逐渐被eBooster 所取代。针…

微信小程序 - 渲染和逻辑

通信模型 渲染层的界面使用了WebView 进行渲染&#xff1b;逻辑层采用JsCore线程运行JS脚本。 数据驱动 WXML会解析对应model值&#xff0c;并生成js对象&#xff0c;最后生成最终的dom树。 当model发生变更时候&#xff0c;会判断解析wxml后的js对象是否改动&#xff0c;若改动…

[重磅更新] Mac玩游戏必备!Crossover24版现已上线!附免费升级攻略 Crossover软件使用方法安装程序 免费版

好久不见啦&#xff0c;最近一直在忙着研究Mac玩游戏&#xff0c;什么幻兽帕鲁、女神异闻录之类的&#xff0c;有些沉迷了&#xff0c;实在对不住大家… 不过今天还是给大家带来了好消息&#xff01;那就是让Mac玩游戏不再是笑话的神器&#xff0c;Crossover正式发布了2024版&a…

使用CANoe进行27服务安全认证解密算法

方法&#xff1a;通过cdd文件dll文件进行27服务通过安全认证解密 步骤1&#xff1a;菜单栏选中Diagnostics&XCP这一栏&#xff0c; 步骤2&#xff1a;鼠标左击CANdelaStudio 步骤3&#xff1a;弹出如下弹窗&#xff0c;选择 I accept 步骤4&#xff1a;选择新建 步骤5&…

下载nvm注意事项

不能在有空格的文件夹里面&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;并且需要将原先有的node卸载&#xff01; &#xff08;去控制面板下卸载&#xff09; 我原先下在了Program Files里面 安装参考&#xff1a; nvm安装&#xff0c;nvm的使…

redis-Redis主从,哨兵和集群模式

一&#xff0c;Redis的主从复制 ​ 主机数据更新后根据配置和策略&#xff0c; 自动同步到备机的master/slaver机制&#xff0c;Master以写为主&#xff0c;Slave以读为主。这样做的好处是读写分离&#xff0c;性能扩展&#xff0c;容灾快速恢复。 1.1 环境搭建 如果你的redi…

ModStartCMS v8.1.0 图片前端压缩,抖音授权登录

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用&#xff0c;支持后台一键快速安装&#xff0c;让开发者能快的实现业务功能开发。 系统完全开源&#xff0c;基于 Apache 2.0 开源协议&#xff0c;免费且不限制商业使用。 功能特性 丰富的模块市…

学习JAVA的第十天(基础)

目录 API之Math 获取绝对值 向上取整 向下取整 四舍五入 获取两个整数的较大值 获取两个整数的较小值 获取平方根 获取立方根 获取一个数的几次幂 获取随机数 API之System 终止当前运行的JAVA虚拟机 返回当前系统的时间毫秒值 数组拷贝 API之Runtime 获取Runt…

websocket 通用类封装和使用

websocket 工具类封装 export default class SocketService{static instancenull;static get Instance(){if(!this.instance){this.instancenew SocketService();}}wxnull;callBackMapping{};connectedfalse;sendRetryCount0;connectRetryCount0;connect(){if(!window.WebSock…

手机AI摄影时代开启,传音引领行业标准化建设

今年春节&#xff0c;AI摄影可谓大出风头。人们在社交平台晒出自己在龙年的AI写真&#xff0c;极大地增添了节日的氛围感&#xff0c;也让我们看到了“AI摄影”的价值。新年伊始&#xff0c;手机巨头们纷纷布局该赛道&#xff0c;基于AI大模型实现的影像功能成为业界关注焦点。…