vue3 + Spingboot + oracle 通过Base64存储图片

news2024/9/25 23:12:12

一 、前言

近期在做vue3+ Springboot + oracle 的工作,有个小功能通过页面导入图片保存到oracle数据库中,本人对前端不是很熟悉,借此记录一下实现方法;

二、前端部分代码

<template>
    <div class="dialog-mian">
      <el-form
        ref="formRef"
        :rules="rules"
        :model="crowdMessageTemplateDTO"
        label-width="auto"
      >
      <el-form-item
          label="视频图片"
          prop="videoImg"
          v-if="crowdMessageTemplateDTO.templateType === '2'"
        >
          <el-upload
            ref="upload"
            action="#"
            :on-change="handleFileChange"
            :before-upload="beforeUpload"
            accept="*.*"
            :limit="1"
            :on-exceed="handleExceed"
            :auto-upload="false"
          >
            <gua-button
              type="default"
              layout="icon-text"
              text="导入"
              icon="document-import"
              title="导入"
              @click="importInfoUpload"
            />
          </el-upload>
       </el-form-item>
       <el-form-item
          label="视频地址"
          prop="videoAddress"
          v-if="crowdMessageTemplateDTO.templateType === '2'"
          >
          <el-input v-model="crowdMessageTemplateDTO.videoAddress" />
        </el-form-item>
    </el-form>
    <el-button
          type="primary"
          @click="save"
          >
          保存
    </el-button>
</template>

<script setup>

const formRef = ref(null)
const rules = reactive({})

let crowdMessageTemplateDTO = ref({
  videoAddress: '',
  videoImg: '',
})

const handleExceed = () => {
  ElMessage({
    message: '仅允许上传一个图片!',
    type: 'warning',
  })
}
const beforeUpload = (file) => {}
const importInfoUpload = async () => {}

const handleFileChange = (file, fileList) => {
  const fileData = file.raw
  if (fileData) {
    if (fileData.size > 2 * 1024 * 1024) {
      ElMessage({
        message: '文件大小不能超过2M',
        type: 'warning',
      })
      return
    }
    // 创建一个FileReader对象
    const reader = new FileReader()
    reader.onload = (e) => {
      // 当FileReader读取完成后,e.target.result就是文件的内容
      crowdMessageTemplateDTO.value.videoImg = e.target.result
    }
    // 读取图片
    reader.readAsDataURL(fileData)
  }
}

const save = () => {
  formRef.value.validate((valid, fields) => {
    if (valid) {
      const addDTO = reactive({ 
        videoAddress: crowdMessageTemplateDTO.value.videoAddress,
        videoImg: crowdMessageTemplateDTO.value.videoImg,    
      })
      const loadingInstance = ElLoading.service('正在保存数据...')
	  //post 方法
      Zc.addMessageTemplateTest(addDTO)
        .then((result) => {
          ElMessage({
            type: 'success',
            message: '保存成功',
          })
          back()
        })
        .catch((err) => {
          // ElMessage({
          //   type: 'error',
          //   message: err.stack,
          // })
        })
        .finally(() => {
          loadingInstance.close()
        })
    } else {
      console.log('error submit!', fields)
    }
  })
}

</script>

三、后端代码

1、bean

@Data
public class CrowdMessageTemplateVO implements Serializable {

   /**
	 * 视频地址
	 */
	@Schema(name = "videoAddress", description = "视频地址")
	private String videoAddress;

	/**
	 * 视频图片
	 */
	@Schema(name = "videoImg", description = "视频图片,Base64编码")
	private String videoImg;
}

2、controller

 @Operation(summary = "测试消息")
    @PostMapping("/zc/addMessageTemplateTest")
    public HttpResponse addMessageTemplateTest(@RequestBody CrowdMessageTemplateDTO crowdMessageTemplateDTO) {
	//TODO 后端处理及入库操作等
	}

四、oracle 表设计

说明: 使用CLOB 存储

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

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

相关文章

SQL注入实例(sqli-labs/less-7)

0、初始页面 1、确定闭合字符 确定闭合字符为单引号括号括号 )) ?id1 and 11 ?id1 and 12 ?id1 ?id1)) 2、查看securie_file_priv参数 ?id1)) and upddatexml(1,concat(0x7e,(select secure_file_priv),0x7e),1) -- 3、写入一句话木马 ?id1)) union select null,&q…

SFT、RLHF、DPO、IFT —— LLM 微调的进化之路

TL;DR • SFT、RLHF 和 DPO 都是先估计 LLMs 本身的偏好&#xff0c;再与人类的偏好进行对齐&#xff1b; • SFT 只通过 LLMs 生成的下一个单词进行估计&#xff0c;而 RLHF 和 DPO 通过 LLMs 生成的完整句子进行估计&#xff0c;显然后者的估计会更准确&#xff1b; • 虽然…

壹连科技净利润增速放缓:毛利率清一色下滑,研发费用率远弱同行

《港湾商业观察》施子夫 王璐 从2022年6月20日递表创业板以来&#xff0c;深圳壹连科技股份有限公司&#xff08;以下简称&#xff0c;壹连科技&#xff09;已经走了2年多的历程&#xff0c;如今离挂牌上市近在咫尺。 今年7月22日&#xff0c;壹连科技提交了注册申请。8月2日…

哪个电脑桌面便签好用并且无广告弹窗?

在日常生活和工作中&#xff0c;很多人喜欢在电脑桌面上使用便签软件。便签软件可以方便地记录临时任务、重要信息或者待办事项&#xff0c;帮助用户更好地管理时间和提高工作效率。想象一下&#xff0c;在繁忙的工作中&#xff0c;你能够快速在桌面便签上记下即将要做的任务&a…

基本K8s搭建Jekins+gitee项目自动部署

这里写目录标题 1.基本K8s部署安装Jekins2.设置Jenkins国内镜像源2.安装Gitee插件1.安装Gitee Plugin2.验证安装Gitee Plugin 3.新建任务1.输入任务名称2.输入你gitee上的项目链接3.测试构建 4.查看项目在k8s集群master节点的位置1.确认 Jenkins Pod 名称2.使用kubectl exec到 …

大数据技术复习--概述

概述 数据的概念&#xff1a;数据是指对客观事件进行记录并可以鉴别的符号&#xff0c;是对客观事物的性质、状态以及相互关系等进行记载的物理符号或这些物理符号的组合&#xff0c;是可识别的、抽象的符号。 数据类型&#xff1a;文本、图片、音频、视频 从数据的结构化程…

2024华数杯全国大学生数学建模竞赛B题思路-VLSI电路单元的自动布局-MIA 感知的详细布局问题描述

本章主要对超大规模集成电路&#xff08;Very Large Scale Integration Circuit&#xff0c;VLSI&#xff09;布局 问题进行了描述&#xff0c;首先简单梳理一下超大规模集成电路设计流程、物理设计相关的知 识&#xff0c;接着对 MIA 感知的混合高度单元集成电路详细布局问题的…

vue之ref 属性

文章目录 1.ref 属性概述1.1 作用和特点 2.vue2用法2.1 获取 dom2.3 获取组件&#xff1a; 3.vue3用法 1.ref 属性概述 1.1 作用和特点 &#xff08;1&#xff09;作用&#xff1a;用来给元素或组件注册引用信息(相当于是id的替代者) &#xff08;2&#xff09;应用在HTML标签…

Kettle下载安装MySQL驱动教程

在 Windows 系统上下载适用于 MySQL 的 JDBC 驱动程序&#xff0c;您可以按照以下步骤操作&#xff1a; 1. 访问 MySQL 官方下载页面 打开浏览器&#xff1a; 打开您喜欢的浏览器。 访问 MySQL Connector/J 下载页面&#xff1a; 访问 MySQL Connector/J 下载页面. 2. 选择…

探索亚马逊Amazon S3:无缝存储管理与极速数据传输的奥秘

亚马逊云科技中Amazon S3&#xff0c;因其设计简单与高度可靠&#xff0c;允许用户通过互联网存储和检索任意数量的数据&#xff0c;并能够自动扩展以满足各种规模的需求&#xff0c;使得Amazon S3成为了许多云计算应用和网站的核心存储基础设施之一&#xff0c;Amazon S3提供的…

WSL2安装多个Ubuntu实例,大佬带你玩转Linux!!!

安装wsl子系统并安装一个Ubuntuwsl ubuntu 安装的正确方式-CSDN博客文章浏览阅读546次,点赞10次,收藏4次。wsl ubuntu 安装的正确方式:将wsl2设置为默认版本:1、打开powershell2、设置wsl的版本为2​编辑3、更新wsl程序4、强制关闭子系统5、查看wsl支持的列表6、安装指定版…

【Dynamo】AnyCAD使用Dynamo绘制三维模型(二)——生成序列和范围的几种方式

说明&#xff1a; Dynamo为开源项目&#xff0c;开源地址&#xff1a;https://github.com/DynamoDS/Dynamo.git本文章使用版本&#xff1a;v3.0.3 范围 使用Range节点 start和end分别表示范围的边界&#xff0c;step表示步长。如下为[1,10]范围内步长为2结果 ​ 使用Code…

[000-01-025].第07节:WorkBench

我的后端学习大纲 我的Drools学习大纲 8. WorkBench 8.1 WorkBench简介: 1.WorkBench是KIE组件中的元素&#xff0c;也称为KIE-WB&#xff0c;是Drools-WB与JBPM-WB的结合体。它是一个可视化的规则编辑器。WorkBench其实就是一个war包&#xff0c;安装到tomcat中就可以运行。…

UE Sequence学习

UE4中的动画编辑器 —— Sequencer in UE4 - 知乎 (zhihu.com) UE4 LevelSequence源码解析 - 知乎 (zhihu.com) C模块 对ue4 sequence的学习和理解 - 知乎 (zhihu.com) 必须要先在你项目工程的.build.cs里加入 MoviePlayer, LevelSequence, MovieScene. 引入头文件 #inclu…

我所理解的sprd-camera摄像头框架流程分析

摄像头的图像格式:RGB24,RGB565,RGB444,YUV4:2:2 RGB24 表示R、G、B ,3种基色都用8个二进制位表示,那么红色、绿色、蓝色各有256种,那么由这三种基色构成的颜色就是256X256X256=16,777,216种,约等于1677万。UV 和我们熟知的 RGB 类似,是一种颜色编码格式。 YUV 包含三…

sonatype私服配置与下载

文章目录 私服下载地址setting.xml配置java中pom.xml配置上传 私服 下载地址 地址&#xff1a;https://help.sonatype.com/en/download.html 百度网盘地址链接: https://pan.baidu.com/s/1_sjjHbXs27ya49SEcN9XNw 提取码: g56i 1.下载后解压得到两个文件 2.进入到nexus-3.…

揭秘脑囊肿:了解那些不容忽视的症状

脑囊肿&#xff0c;作为颅内的一种良性占位性病变&#xff0c;虽然不常见&#xff0c;但其潜在的症状却可能对患者的生活质量产生显著影响。了解脑囊肿的症状&#xff0c;对于及时诊断和治疗至关重要。 头痛&#xff1a;脑囊肿最常见的症状之一是头痛&#xff0c;这通常是由于囊…

【海贼王航海日志:前端技术探索】CSS你了解多少?(一)

目录 1 -> CSS是什么 2 -> 基本语法规范 3 -> 引入方式 3.1 -> 内部样式表 3.2 -> 行内样式表 3.3 -> 外部样式 4 -> 代码风格 4.1 -> 样式格式 5 -> 选择器 5.1 -> 选择器的功能 5.2 -> 选择器的种类 5.3 -> 基础选择器 5.3…

SQL进阶技巧:数据预处理如何对数据进行分桶【分箱】?

目录 0 引言 1 数据准备 2 数据分桶SQL实现 2 1.基于规则的分桶 2.2 等距分桶 2.3等频分桶 3 小结 0 引言 数据分桶&#xff08;Bucket&#xff09;作为数据预处理的一部分&#xff0c;是进行数据模型建设的前提&#xff0c;是构建特征工程的重要手段。也被称为离散分箱或…

【算法】KMP算法

应用场景 有一个字符串 str1 "BBA ABCA ABCDAB ABCDABD"&#xff0c;和一个子串 str2 "ABCDABD"现在要判断 str1 是否含有 str2&#xff0c;如果含有&#xff0c;就返回第一次出现的位置&#xff0c;如果不含有&#xff0c;则返回 -1 我们很容易想到暴力…