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 相关文章推荐
实现超用户体验 table排序javascript实现代码
Jun 22 Javascript
jquery选择器的选择使用及性能介绍
Jan 16 Javascript
鼠标滚轮控制网页横向移动实现思路
Mar 22 Javascript
jquery通过ajax加载一段文本内容的方法
Jan 15 Javascript
JavaScript通过function定义对象并给对象添加toString()方法实例分析
Mar 23 Javascript
jQuery Real Person验证码插件防止表单自动提交
Nov 06 Javascript
浅析javascript的return语句
Dec 15 Javascript
ionic js 复选框 与普通的 HTML 复选框到底有没区别
Jun 06 Javascript
微信小程序图片自适应支持多图实例详解
Jun 21 Javascript
underscore之function_动力节点Java学院整理
Jul 11 Javascript
JS实现合并json对象的方法
Oct 10 Javascript
vue父子组件通信的高级用法示例
Aug 29 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在线代理转向代码
2012/05/05 PHP
关于Iframe如何跨域访问Cookie和Session的解决方法
2013/04/15 PHP
CodeIgniter启用缓存和清除缓存的方法
2014/06/12 PHP
php each 返回数组中当前的键值对并将数组指针向前移动一步实例
2016/11/22 PHP
JavaScript中void(0)的具体含义解释
2007/02/27 Javascript
Jquery Ajax 学习实例2 向页面发出请求 返回JSon格式数据
2010/03/15 Javascript
jQuery 阴影插件代码分享
2012/01/09 Javascript
jQuery:节点(插入,复制,替换,删除)操作
2013/03/04 Javascript
文本框回车提交与禁止提交示例
2013/09/27 Javascript
JQuery的$和其它JS发生冲突的快速解决方法
2014/01/24 Javascript
JavaScript 学习笔记之基础中的基础
2015/01/13 Javascript
简述JavaScript对传统文档对象模型的支持
2015/06/16 Javascript
Eclipse引入jquery报错如何解决
2015/12/01 Javascript
jQuery+CSS3实现四种应用广泛的导航条制作实例详解
2016/09/17 Javascript
javascript九宫格图片随机打乱位置的实现方法
2017/03/15 Javascript
详解使用vscode+es6写nodejs服务端调试配置
2017/09/21 NodeJs
node中modules.exports与exports导出的区别
2018/06/08 Javascript
微信小程序使用gitee进行版本管理
2018/09/20 Javascript
JS简单数组排序操作示例【sort方法】
2019/05/17 Javascript
javascript贪吃蛇游戏设计与实现
2020/09/17 Javascript
Vue 401配合Vuex防止多次弹框的案例
2020/11/11 Javascript
[34:27]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第一局
2016/02/26 DOTA
Python深入学习之装饰器
2014/08/31 Python
Python实现模拟登录及表单提交的方法
2015/07/25 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
2019/11/29 Python
Django之choices选项和富文本编辑器的使用详解
2020/04/01 Python
python处理写入数据代码讲解
2020/10/22 Python
台湾森森购物网:U-mall
2017/10/16 全球购物
五一手机促销方案
2014/03/08 职场文书
建议书标准格式
2014/03/12 职场文书
汽修专业自荐信
2014/07/07 职场文书
党员对照检查材料整改措施思想汇报
2014/09/26 职场文书
2015年秋季开学典礼校长致辞
2015/07/16 职场文书
python 批量压缩图片的脚本
2021/06/02 Python
python数据可视化JupyterLab实用扩展程序Mito
2021/11/20 Python
SQL Server携程核心系统无感迁移到MySQL实战
2022/06/01 SQL Server