上传图片,base64改为文件流,并转给后端

需求:
在这里插入图片描述

html代码:

 <el-dialog v-model="dialogPicVisible" title="新增图片" width="500">
      <el-form :model="picForm">
        <el-form-item label="图片名称:" :label-width="100">
          <el-input v-model="picForm.picName" clearable />
        </el-form-item>
        <el-form-item label="新增图片:" prop="img" :label-width="100">
          <el-upload
            class="avatar-uploader"
            :show-file-list="false"
            :http-request="uploadFn"
          >
            <img v-if="picForm.file" :src="picForm.file" class="avatar" />
            <el-icon v-else class="avatar-uploader-icon">
              <Plus />
            </el-icon>
          </el-upload>
        </el-form-item>
      </el-form>
      <template #footer>
        <div class="dialog-footer">
          <el-button @click="dialogPicVisible = false">取 消</el-button>
          <el-button type="primary" @click="submitPicBtn"> 确 认 </el-button>
        </div>
      </template>
    </el-dialog>

这是base64转文件流的代码

// base64转文件流
function base64ToFile(base64Data, filename) {
  // 将base64的数据部分提取出来
  const parts = base64Data.split(";base64,");
  const contentType = parts[0].split(":")[1];
  let strArr = contentType.split("/");
  console.log('strArr',strArr)
  const raw = window.atob(parts[1]);
  // 将原始数据转换为Uint8Array
  const rawLength = raw.length;
  const uInt8Array = new Uint8Array(rawLength);
  for (let i = 0; i < rawLength; ++i) {
    uInt8Array[i] = raw.charCodeAt(i);
  }
  // 使用Blob和提取出的数据内容创建一个新的Blob对象
  const blob = new Blob([uInt8Array], { type: contentType });
  // 创建一个指向Blob对象的URL,并使用这个URL创建一个File对象
  const blobUrl = URL.createObjectURL(blob);
  const newFilename = filename + '.' + strArr[1]

  const file = new File([blob], newFilename, { type: contentType });
  // 返回File对象
  return file;
}

这是确认提交的逻辑

function submitPicBtn() {
  const file = base64ToFile(picForm.file, picForm.picName);
  console.log('file',file)
  let strArr = file.type.split("/");
  var fileForm = new FormData();
  fileForm.append("classifyId", form.classifyId);
  fileForm.append("file", file);
  var newPicName = picForm.picName + "." + strArr[1];
  fileForm.append("picName", newPicName);
  axios
    .post("/h5htglpt/api/uploadPic", fileForm, {
      headers: {
        "Content-Type": "multipart/form-data",
      },
    })
    .then((res) => {
      console.log('res',res)
      if (res.data.code == "0") {
        ElMessage({
          message: "新增成功",
          type: "success",
        });
        dialogPicVisible.value = false
        getTreeList();
      }
    })
    .catch((error) => {});
}


打印上传成功后的file 注意:name需要拼接图片类型的后缀

在这里插入图片描述

这是css的代码

.demo-image .block {
  padding: 30px 0;
  text-align: center;
  border-right: solid 1px var(--el-border-color);
  display: inline-block;
  width: 20%;
  box-sizing: border-box;
  vertical-align: top;
}
.demo-image .block:last-child {
  border-right: none;
}
.demo-image .demonstration {
  display: block;
  color: var(--el-text-color-secondary);
  margin: 10px 0;
  font-weight: bold;
  letter-spacing: 1px;
}

.avatar-uploader .avatar {
  width: 178px;
  height: 178px;
  display: block;
}

::v-deep .avatar-uploader .el-upload {
  border: 1px dashed var(--el-border-color);
  border-radius: 6px;
  cursor: pointer;
  position: relative;
  overflow: hidden;
  transition: var(--el-transition-duration-fast);
}

.avatar-uploader .el-upload:hover {
  border-color: var(--el-color-primary);
}

.el-icon.avatar-uploader-icon {
  font-size: 28px;
  color: #8c939d;
  width: 178px;
  height: 178px;
  text-align: center;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

开放式耳机哪个品牌比较好?2024最值得推荐的火爆机型!!

在这个快节奏的时代&#xff0c;我们都在寻找那些既能让我们享受音乐&#xff0c;又能保持对外界感知的音频设备。开放式耳机以其独特的设计&#xff0c;满足了这一需求&#xff0c;它们让你在享受音乐的同时&#xff0c;还能听到周围环境的声音&#xff0c;无论是安全出行还是…

【机器学习】作业 Exam1

线性回归预测 唉&#xff0c;研0了&#xff0c;得学机器学习了。当然还是听的吴恩达老师的课&#xff0c;虽然全是英文&#xff0c;但是&#xff0c;怎么评价呢&#xff0c;讲得既专业又通俗易懂&#xff0c;初学者(像我这样的菜鸡)都值得一看&#xff01;&#xff01; 根据人…

更深入了解汽车与航空电子等安全关键型应用的IP核考量因素

作者&#xff1a;Philipp Jacobsohn&#xff0c;SmartDV高级应用工程师 中国已经连续十多年成为全球第一大汽车产销国&#xff0c;智能化也成为了汽车行业发展的一个重要方向&#xff0c;同时越来越多的制造商正在考虑进入无人机和飞行汽车等低空设备&#xff0c;而所有的这些…

以太网电路相关功能说明

RJ45模块用于PHY芯片之间的互连&#xff0c;如图1所示&#xff0c;RJ45有两种组合形式&#xff0c;一种是分立式&#xff0c;网口变压器和RJ45连接座是分开的&#xff0c;另一种是网口变压器和RJ45集成在一起。 图1 RJ45两种主要形式 接下来以分立式RJ45的百兆网电路做个说明&a…

Xilinx FPGA UltraScale SelectIO 接口逻辑资源

目录 1. 简介 2. Bank Overview 2.1 Diagram 2.2 IOB 2.3 Slice 2.4 Byte Group 2.5 I/O bank 示例 2.6 Pin Definition 2.7 数字控制阻抗(DCI) 2.8 SelectIO 管脚供电电压 2.8.1 VCCO 2.8.2 VREF 2.8.3 VCCAUX 2.8.4 VCCAUX_IO 2.8.5 VCCINT_IO 3. 总结 1. 简介…

Intewell+Codesys高实时运控解决方案

IntewellCodesys高实时运控解决方案 IntewellCodesys方案&#xff0c;基于X86、ARM、MIPS、RISC-V等不同架构的硬件平台&#xff0c;通过Intewell实时操作系统的多种构型形态&#xff0c;包括Intewell-RTOS&#xff0c;Intewell-Win&#xff0c;Intewell-Lin&#xff0c;Intewe…

详解TCP和UDP通信协议

目录 OSI的七层模型的主要功能 tcp是什么 TCP三次握手 为什么需要三次握手&#xff0c;两次握手不行吗 TCP四次挥手 挥手会什么需要四次 什么是TCP粘包问题&#xff1f;发生的原因 原因 解决方案 UDP是什么 TCP和UDP的区别 网络层常见协议 利用socket进行tcp传输代…

查看oracle ojdbc所支持的JDBC驱动版本

oracle jcbc驱动的下载地址参考&#xff1a;JDBC and UCP Downloads page 其实上文中对ojdbc所支持的JDBC驱动版本已经有说明了&#xff0c;不过&#xff0c;因为oracle的驱动包很多时间&#xff0c;都是在公司内部私服里上传维护的&#xff0c;上传的时候&#xff0c;可能又没…

鲸发卡系统 /pay/xinhui/request_post 任意文件读取漏洞复现

0x01 产品简介 鲸发卡系统 致力于解决虚拟商品的快捷发卡服务&#xff0c;为商户及其买家 提供&#xff0c;便捷、绿色、安全、快速的销售和购买体验。框架已升级TP最新版本&#xff0c;无安全BUG&#xff0c;重新开发将近80&#xff05;&#xff0c;原创功能10项&#xff0c;…

static-02

三个注意点 1.静态方法中无this关键字 2.静态方法只能访问静态资源 3.非静态方法可以访问所有 1.静态方法中无this关键字--------(非静态)普通方法里有this关键字(隐藏的) this关键字:代表方法调用者的地址值----这个方法的调用者的就是一个具体的对象 非静态的东西通常跟…

使用virt-manager添加宿主机上的U盘

1、打开virt-manager管理界面 [rootkvm4 ~]# virt-manager 2、打开需要添加U盘的虚拟机 3、进入Hardware管理器 4、选择插入U盘的设备&#xff0c;点Finish 5、进入虚拟机&#xff0c;确认U是否添加OK

基层医院、专科医院云HIS系统,支持电子病历四级,全套源码交付

云HIS系统采用B/S架构云端SaaS服务的方式提供&#xff0c;使用用户通过浏览器即能访问&#xff0c;无需关注系统的部署、维护、升级等问题&#xff0c;系统充分考虑了模板化、配置化、智能化、扩展化等设计方法&#xff0c;覆盖了基层医院的主要工作流程&#xff0c;能够与监管…

倩女幽魂游戏攻略:装备攻略大全与云手机助力教程!

在《倩女幽魂》这片古风奇幻的江湖中&#xff0c;装备不仅是角色的外在装扮&#xff0c;更是提升实力、闯荡三界的关键所在。本文将从装备的颜色、类别、词缀及获取途径等多个维度&#xff0c;为玩家呈现一份详尽而深入的装备攻略&#xff0c;助你成为三界中的佼佼者。 在倩女幽…

PDM系统中物料分类与编码规则生成方案

在企业管理软件中&#xff0c;PDM系统是企业管理的前端软件&#xff0c;用于管理研发图纸、BOM等数据&#xff0c;然后生成相关物料表或BOM&#xff0c;递交给后端ERP系统进行生产管理。在PDM系统中&#xff0c;有两种方式可以生成物料编码。 1第一种是用户可以通过软件接口将…

windows10下的游戏怎么卸载?

在Windows 10中卸载游戏可以通过多种途径进行&#xff0c;下面是一些常见的方法&#xff1a; 方法一&#xff1a;通过“设置”应用卸载 1. 点击左下角的“开始”按钮&#xff0c;打开“开始”菜单。 2. 选择“设置”图标&#xff08;齿轮形状&#xff09;。 3. 在“设置”窗…

【系统架构设计】计算机组成与体系结构(一)

计算机组成与体系结构 计算机系统组成计算机硬件组成控制器运算器主存储器辅助存储器输入设备输出设备 计算机系统结构的分类存储程序的概念Flynn分类 复杂指令集系统与精简指令集系统总线 存储器系统流水线 兜兜转转&#xff0c;最后还是回到了4大件&#xff0c;补基础&#x…

通过PLC地址来切换威纶通触摸屏界面

Step 1 元件-PLC控制 Step 2 新增 选择设备 选择切换基本窗口功能 选择触发地址 Step 3 离线仿真测试 在数值框中输入对应的页面号 可以看到页面可以正常切换 分享创作不易&#xff0c;请多多支持&#xff0c;点赞、收藏、关注&#xff01; Ending~

如何在抖音小程序上展示VR全景?

如果您或者您服务的甲方需要在抖音小程序中打开720全景漫游链接&#xff0c;就需要在720云平台进行小程序校验。总体来说&#xff0c;在720云平台提交对应小程序信息后&#xff0c;您将获得720云业务域名&#xff0c;将此业务域名配置到抖音小程序后台&#xff0c;即完成校验&a…

神经网络中的激活函数

目录 一、什么是激活函数&#xff1a;二、如何选择激活函数&#xff1a;1.Sigmoid激活函数&#xff1a;2.线性激活函数&#xff1a;3.ReLU激活函数&#xff1a; 一、什么是激活函数&#xff1a; 激活函数是神经网络中的一种函数&#xff0c;它在神经元中起到了非线性映射的作用…

长期保存数据用什么硬盘安全?硬盘数据丢失怎么解决?一文读懂

关乎硬盘数据丢失的恢复窍门&#xff0c;这篇文章您可一定要收藏妥当。在硬盘的使用进程中&#xff0c;诸多情形都会致使数据丢失&#xff0c;像是硬盘跌落、病毒侵袭、系统文件受损等等。在这种时候&#xff0c;务必要运用正确的方式&#xff0c;全力抢救硬盘里存储的珍贵数据…