vue.js图片转Base64上传图片并预览的实现方法


Posted in Javascript onAugust 02, 2018

对于前端人员来说,图片处理是一个很常见的需求,由于图片稍微特殊,现在多数做法都是使用调用ajax接口通过http方法来提交,例如post方法提交,后台处理后返回一个图片路径给前端,前端根据这个路径写入img标签,但是基于当前的前后端分离的开发模式下,前后端代码往往不在同一个系统目录下,而且部署时可能liunx路径与windows路径不一样,这样后期路径更改可能会导致维护困难问题出现。

针对这种问题,这里我推荐使用图片转base64格式,再发给后端,后端只需将转码结果存入数据库即可,前端调用接口直接获取到base64数据直接写入img src 标签即可

下面使用element ui upload组件实现思路

代码如下:

<el-upload
   ref='upload'
   :auto-upload='false' 
   :file-list="fileList" 
   :multiple='false'
   :limit="1"
   :on-exceed="handleExceed"
   :http-request="uploadFiles" 
   accept="image/jpeg,image/gif,image/png"
   action=''
   :on-change='changeUpload'      
   >
  <el-button slot="trigger" size="mini" type="primary">选取图片</el-button>
  <span> </span>
  <el-button @click='uploadFiles' size="mini" type="primary">点击上传</el-button>
 </el-upload>

js部分

//点击上传图片,上传成功返回图片路径 
  uploadFiles(){
    var That=this;
   let file=this.$refs.upload.$refs['upload-inner'].$refs.input; //获取文件数据
   let fileList=file.files;   
   var imgFile;
   let reader = new FileReader();   //html5读文件
   reader.readAsDataURL(fileList[0]); //转BASE64    
   reader.onload=function(e) {    //读取完毕后调用接口
    imgFile = e.target.result;
    let obj={
      id: "loginLogo",
      configGroup: "logo",
      configItem : "loginLogo",
     itemValue : imgFile  
    }
    return BaseApi.uploadFiles(obj).then((res)=>{
      if(res.status=='SUCCESS'){
        AlertBox('图片上传成功!','success',true).then(()=>{
          return That.getSysLogo(); //调用获取base64数据接口
        });
      }else{
        Alert('图片上传失败',res);
        return ''
      }
    })

   };     
  },

最后在界面img src标签中绑定That.getSysLogo()接口返回的base64字符串即可!

以上就是本文全部内容。 希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 对象的定义方法
Jan 10 Javascript
jQuery Tools tab使用介绍
Jul 14 Javascript
JQuery中DOM事件冒泡实例分析
Jun 13 Javascript
详解JavaScript中数组的相关知识
Jul 29 Javascript
干货分享:让你分分钟学会javascript闭包
Dec 25 Javascript
详解maxlength属性在textarea里奇怪的表现
Dec 27 Javascript
jQuery+CSS3实现仿花瓣网固定顶部位置带悬浮效果的导航菜单
Sep 21 Javascript
原生JS中slice()方法和splice()区别
Mar 06 Javascript
AngularJS入门教程二:在路由中传递参数的方法分析
May 27 Javascript
Vue精简版风格指南(推荐)
Jan 30 Javascript
最简单的JS实现json转csv的方法
Jan 10 Javascript
js实现烟花特效
Mar 02 Javascript
vue组件横向树实现代码
Aug 02 #Javascript
利用Node.js批量抓取高清妹子图片实例教程
Aug 02 #Javascript
在微信小程序里使用watch和computed的方法
Aug 02 #Javascript
在小程序中使用Echart图表的示例代码
Aug 02 #Javascript
node.js读取Excel数据(下载图片)的方法示例
Aug 02 #Javascript
Vue-cli配置打包文件本地使用的教程图解
Aug 02 #Javascript
详解使用VueJS开发项目中的兼容问题
Aug 02 #Javascript
You might like
php实现购物车功能(下)
2016/01/05 PHP
基于PHP实现栈数据结构和括号匹配算法示例
2017/08/10 PHP
ThinkPHP 3使用OSS的方法
2018/07/19 PHP
js 匿名调用实现代码
2009/06/19 Javascript
javascript 面向对象继承
2009/11/26 Javascript
JQuery扩展插件Validate 5添加自定义验证方法
2011/09/05 Javascript
javascript常见数字进制转换实例分析
2016/04/21 Javascript
微信小程序开发之toast等弹框提示使用教程
2017/06/08 Javascript
详解基于Vue cli生成的Vue项目的webpack4升级
2018/06/19 Javascript
JS中getElementsByClassName与classList兼容性问题解决方案分析
2019/08/07 Javascript
浅谈JS中几种轻松处理'this'指向方式
2019/09/16 Javascript
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
JavaScript实现轮播图效果
2020/10/30 Javascript
python操作MongoDB基础知识
2013/11/01 Python
python读取Android permission文件
2013/11/01 Python
pycharm+django创建一个搜索网页实例代码
2018/01/24 Python
Python实现的用户登录系统功能示例
2018/02/05 Python
Python3之简单搭建自带服务器的实例讲解
2018/06/04 Python
详解python3 + Scrapy爬虫学习之创建项目
2019/04/12 Python
python实现统计代码行数的小工具
2019/09/19 Python
Python3 无重复字符的最长子串的实现
2019/10/08 Python
使用PyCharm安装pytest及requests的问题
2020/07/31 Python
CSS3五个技巧给你的网站带来出色的效果
2009/04/02 HTML / CSS
Luxplus瑞典:香水和美容护理折扣
2018/01/28 全球购物
介绍一下SQL注入攻击的种类和防范手段
2012/02/18 面试题
总监职责范文
2013/11/09 职场文书
大学生职业生涯规划书汇总
2014/03/20 职场文书
蓝颜请假条
2014/04/11 职场文书
民生工作实施方案
2014/05/31 职场文书
经典团队口号大全
2014/06/21 职场文书
为自己工作观后感
2015/06/11 职场文书
七一表彰大会简报
2015/07/20 职场文书
幼儿园安全教育随笔
2015/08/14 职场文书
《钓鱼的启示》教学反思
2016/02/18 职场文书
学长教您写论文:经验总结
2019/07/09 职场文书
Github 使用python对copilot做些简单使用测试
2022/04/14 Python