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

创建个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>

效果图
在这里插入图片描述
选择完图片后直接展示了
在这里插入图片描述
如果是做成组件的话,在父组件使用方式如下

// replaceMenuFlag:true:false
<replace-menu v-if="replaceMenuFlag"></replace-menu>
  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要实现将本地图片base64格式上传到后端,可以使用以下步骤: 1. 在Vue项目中安装mavon-editor插件,可以使用npm进行安装:`npm install mavon-editor --save` 2. 在需要使用编辑器的Vue组件中引入mavon-editor并注册组件: ```vue <template> <mavon-editor v-model="content" @imgAdd="handleImgAdd"></mavon-editor> </template> <script> import 'mavon-editor/dist/css/index.css' import MavonEditor from 'mavon-editor' export default { components: { MavonEditor }, data() { return { content: '' } }, methods: { handleImgAdd(data) { // 处理图片上传 } } } </script> ``` 3. 在handleImgAdd方法中,可以使用FormData对象将base64格式图片数据上传到后端,代码如下: ```javascript handleImgAdd(data) { const file = data.file const reader = new FileReader() const vm = this reader.readAsDataURL(file) reader.onload = function() { const formData = new FormData() formData.append('image', this.result) axios.post('/upload-image', formData).then(response => { vm.content += '<img src="' + response.data.url + '">' }) } } ``` 上述代码中,我们使用FileReader对象将文件读取base64格式,然后创建FormData对象,将base64数据作为参数添加到formData中。最后,使用axios库的post方法将formData发送到后端。当上传成功后,我们将回调函数中的response.data.url作为图片的src属性,插入到编辑器中。 4. 在后端接收base64格式图片数据,并将其转换为文件保存到服务器,最后返回图片的URL地址。这一部分需要根据后端框架和语言进行实现,这里不做过多介绍。 以上就是使用mavon-editor将本地图片base64格式上传到后端并回显的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萧寂173

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值