vue2使用文件上传读取本地照片并转化base64格式进行展示

news2025/1/18 8:57:02

创建个vue2项目,直接把代码放到一个vue2页面内运行就好,下面代码拿来即用

<template>
  <div>
    <div class="replace_menu_mask" @click="closeMenu">
      <img :src="replaceImg" alt="" style="width: 100%;">
    </div>
    <div :class="{ 'replace_menu': flag }" v-if="flag">
      <div class="replace_menu_item" @click="randomBgImg">系统随机</div>
      <div class="replace_menu_item">
        相册<input type="file" @change="perPhotoAlbum" name="file" id="file" />
      </div>
      <div class="replace_menu_item item_cancel" @click="closeMenu">取消</div>
    </div>
  </div>
</template>

<script>
export default {
  name: 'replaceMenu',
  data () {
    return {
      flag: true, // 控制弹窗显示
      replaceImg: '', // 选取的图片地址
    }
  },
  methods: {
    closeMenu () {
      // 关闭弹窗
      this.flag = false
    },
    // 本地图片读取(移动端则选择手机相册,pc端选择文件夹)
    perPhotoAlbum (e) {
      const that = this
      let file = e.target.files[0]
      that.getBase64(file).then(res => {
        that.replaceImg = res // 图片地址源
        // 选择完毕后关闭弹窗
        this.flag = false
      })
    },
    // 二进制流转换为base64 格式。
    getBase64 (data) {
      return new Promise((resolve, reject) => {
        const blob = new Blob([data], {
          type: "image/jpg"
        }) //类型一定要写!!!
        const reader = new FileReader()
        reader.readAsDataURL(blob)
        reader.onload = () => resolve(reader.result)
        reader.onerror = (error) => reject(error)
      })
    },
    // 随机显示图片
    randomBgImg () {
      // 随机图片这个自己写个随机数就好,然后抽取不同图片把路径放上去即可,这里讲的主要是从本地拿图片并转化base64格式用于显示
    }
  }
}
</script>

<style lang="less">
.replace_menu_mask {
  width: 100%;
  height: 100%;
  position: fixed;
  top: 0;
  left: 0;
  background-color: rgba(0, 0, 0, .5);
  z-index: 99;
}

.replace_menu {
  width: 100%;
  position: fixed;
  bottom: 0;
  left: 0;
  z-index: 9999;
  transform: translateY(1000px);
  background-color: #f2f2f2;
  border-top-left-radius: 0.41rem;
  border-top-right-radius: 0.41rem;
  animation: mobileBox 0.5s forwards ease-in-out;

  .replace_menu_item:first-child {
    border-top-left-radius: 0.41rem;
    border-top-right-radius: 0.41rem;
  }

  .replace_menu_item {
    text-align: center;
    padding: 0.307rem;
    border-bottom: 0.0205rem solid rgba(0, 0, 0, .1);
    line-height: 0.41rem;
    background-color: #fff;
    color: #333;
    position: relative;

    #file {
      height: 0.205rem;
    }

    input[type="file"] {
      position: absolute;
      top: 0.41rem;
      right: 0;
      background-color: #fff;
      transform: translate(-300px, 0px) scale(4);

      opacity: 0;
      filter: alpha(opacity=0);
    }
  }

  .item_cancel {
    margin-top: 0.205rem;
    padding: 0.41rem;
  }
}

@keyframes mobileBox {
  0% {
    transform: translateY(1000px);
  }

  100% {
    transform: translateY(0px);
  }
}
</style>

效果图
在这里插入图片描述
选择完图片后直接展示了
在这里插入图片描述

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

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

相关文章

企业微信forMAC,如何左右翻动预览图片

1、control commandshifd 进入企业微信的debug调试模式 2、按照如下步骤选择 3、重启企业微信

【漏洞复现】锐捷EG易网关login.php命令注入漏洞

Nx01 产品简介 锐捷EG易网关是一款综合网关&#xff0c;由锐捷网络完全自主研发。它集成了先进的软硬件体系架构&#xff0c;配备了DPI深入分析引擎、行为分析/管理引擎&#xff0c;可以在保证网络出口高效转发的条件下&#xff0c;提供专业的流控功能、出色的URL过滤以及本地化…

【复习】人工智能 第7章 专家系统与机器学习

专家系统就是让机器人当某个领域的专家&#xff0c;但这章专家系统不咋考&#xff0c;主要靠书上没有的机器学习。 一、专家系统的基本组成 二、专家系统与传统程序的比较 &#xff08;1&#xff09;编程思想&#xff1a; 传统程序 数据结构 算法 专家系统 知识 推理 &…

ansible基础概念

一、【写在前面】 前面断更了几天&#xff0c;笔者被流感给干倒了&#xff0c;去拍了个核磁&#xff0c;给我脑子干成脱髓鞘了&#xff0c;也不知道是之前新冠导致的还是如何&#xff0c;哎要变成愚蠢的低级动物了……稍微恢复一点体力&#xff0c;今天赶快来博客水一水文章。…

Javaweb之Mybatis的动态SQLforeach和include的详细解析

3.3 动态SQL-foreach 案例&#xff1a;员工删除功能&#xff08;既支持删除单条记录&#xff0c;又支持批量删除&#xff09; SQL语句&#xff1a; delete from emp where id in (1,2,3); Mapper接口&#xff1a; Mapper public interface EmpMapper {//批量删除public voi…

re:Invent 2023 技术上新|使用管理控制台中的全新 myApplications 简化应用程序资源的管理...

亚马逊云科技支持应用程序操作的 myApplications 正式上线&#xff0c;这组新功能可帮助您在亚马逊云科技上开始使用您的应用程序&#xff0c;以更少的工作量操作应用程序&#xff0c;并更快地进行大规模迁移。使用亚马逊云科技管理控制台中的 myApplication&#xff0c;您可以…

Spark与Elasticsearch的集成与全文搜索

Apache Spark和Elasticsearch是在大数据处理和全文搜索领域中非常流行的工具。在本文中&#xff0c;将深入探讨如何在Spark中集成Elasticsearch&#xff0c;并演示如何进行全文搜索和数据分析。将提供丰富的示例代码&#xff0c;以便更好地理解这一集成过程。 Spark与Elastics…

555断线报警器电路图

电路的核心部分由NE555组成&#xff0c;R1、R2、C1和NE555组成一个频率越为3KHz左右的多谐振荡电路&#xff0c;当电路接通电源时&#xff0c;振荡器开始工作蜂鸣器LS1发出响声&#xff1b;当1和2被短接时&#xff0c;振荡器的工作条件被破坏&#xff0c;LS1停止工作。 电路分…

【动态规划】【矩阵】C++算法329矩阵中的最长递增路径

作者推荐 【动态规划】C算法312 戳气球 题目 给定一个 m x n 整数矩阵 matrix &#xff0c;找出其中 最长递增路径 的长度。 对于每个单元格&#xff0c;你可以往上&#xff0c;下&#xff0c;左&#xff0c;右四个方向移动。 你 不能 在 对角线 方向上移动或移动到 边界外&…

如何正确地理解应用架构并开发

许多同学或多或少都经历过这样的流程&#xff1a; 新同学刚来公司&#xff0c;学习了解团队的一些工程代码&#xff0c;并了解其中的代码风格团队新接手了一些其他团队的项目&#xff0c;需要了解工程结构以及概念如何定义工程项目的工程结构&#xff0c;包目录结构并达成团队共…

IO进程线程 day7 进程间通信

1.使用消息队列完成两个进程之间相互通信 2.信号通信相关代码的重新实现 &#xff08;1&#xff09;signal函数的实例 #include <head.h>//定义信号处理函数 void handler(int signum) {if(signum SIGINT) //表明要处理2号信号{printf("用户按下了ctrl c键…

【数据结构】二叉树的链式实现

树是数据结构中非常重要的一种&#xff0c;在计算机的各方个面都有他的身影 此篇文章主要介绍二叉树的基本操作 目录 二叉树的定义&#xff1a;二叉树的创建&#xff1a;二叉树的遍历&#xff1a;前序遍历&#xff1a;中序遍历&#xff1a;后序遍历&#xff1a;层序遍历&#…

图解Kubernetes的服务(Service)

pod 准备&#xff1a; 不要直接使用和管理Pods&#xff1a; 当使用ReplicaSet水平扩展scale时&#xff0c;Pods可能被terminated当使用Deployment时&#xff0c;去更新Docker Image Version&#xff0c;旧Pods会被terminated&#xff0c;然后创建新Pods 0 啥是服务&#xf…

使用Excel批量给数据添加单引号和逗号

表格制作过程如下&#xff1a; A2表格暂时为空&#xff0c;模板建立完成以后&#xff0c;用来放置原始数据&#xff1b; 在B2表格内输入公式&#xff1a; ""&A2&""&"," 敲击回车&#xff1b; 解释&#xff1a; B2表格的公式&q…

C++面试宝典第17题:找规律填数

题目 仔细观察下面的数字序列,找到规律,并填写空白处的数字。 (1)1, 2, 4, 7, 11, 16, __ (2)-1, 2, 7, 28, __, 126 (3)6, 10, 18, 32, 57, __ (4)19, 6, 1, 2, 11, __ (5)2, 3, 5, 7, 11, __ (6)1, 8, 9, 4, __, 1/6 (7)1, 2, 3, 7, 16, __, 321 (8)1, 2, …

【Kubernetes】如何使用 kubectl 操作 cluster、node、namespace、pod

如何使用 kubectl 操作 cluster、node、namespace、pod 在列出、描述、修改或删除其他命名空间中的对象时&#xff0c;需要给 kubectl 命令传递 --namespace&#xff08;或 -n&#xff09;选项。如果不指定命名空间&#xff0c;kubectl 将在当前上下文中配置的默认命名空间中执…

java进阶||jdk进阶之循环

从18年学java到现在除了各种各样的数据类型和集合烧不了要遍历这些变量, for循环这时就少不了啦(当然还有8后引入的神器泛型) 先来看一段精髓业务代码, 使用了多个新特性当然也少不了循环和分支判断 代码较长解析在后面 private CommonPage<List<Object>> handle…

Apache Doris (六十二): Spark Doris Connector - (2)-使用

🏡 个人主页:IT贫道-CSDN博客 🚩 私聊博主:私聊博主加WX好友,获取更多资料哦~ 🔔 博主个人B栈地址:豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录 1. 将编译jar包加入本地Maven仓库

【重学C语言】一、C语言简介

【重学C语言】一、C语言简介 什么是编程语言&#xff1f;编程语言 C语言发展史C语言标准变迁开发软件CLion安装步骤 VIsual Studio安装步骤 Clion 和 VS2022 绑定 电脑常识 什么是编程语言&#xff1f; 人类语言&#xff1a;语言就是人类进行沟通交流的表达方式&#xff0c;应…

【小工具】pixi-live2d-display,直接可用的live2d的交互网页/桌面应用

效果&#xff1a; <script src"https://cubism.live2d.com/sdk-web/cubismcore/live2dcubismcore.min.js"></script> <script src"https://cdn.jsdelivr.net/gh/dylanNew/live2d/webgl/Live2D/lib/live2d.min.js"></script> <…