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 相关文章推荐
jQuery简单实现banner图片切换
Jan 02 Javascript
extjs_02_grid显示本地数据、显示跨域数据
Jun 23 Javascript
浅谈js对象的创建和对6种继承模式的理解和遐想
Oct 16 Javascript
js提示框替代系统alert,自动关闭alert对话框的实现方法
Nov 07 Javascript
jQuery 添加样式属性的优先级别方法(推荐)
Jun 08 jQuery
微信小程序 自定义消息提示框
Aug 06 Javascript
react高阶组件经典应用之权限控制详解
Sep 07 Javascript
javascript中的隐式调用
Feb 10 Javascript
Vue 动态设置路由参数的案例分析
Apr 24 Javascript
浅谈PDF.js使用心得
Jun 07 Javascript
vue自动路由-单页面项目(非build时构建)
Apr 30 Javascript
Layui弹出层 加载 做编辑页面的方法
Sep 16 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 IPV6正则表达式验证代码
2010/02/16 PHP
ThinkPHP调用common/common.php函数提示错误function undefined的解决方法
2014/08/25 PHP
支持中文、字母、数字的PHP验证码
2015/05/04 PHP
php使用substr()和strpos()联合查找字符串中某一特定字符的方法
2015/05/12 PHP
PHP多态代码实例
2015/06/26 PHP
浅谈socket同步和异步、阻塞和非阻塞、I/O模型
2016/12/15 PHP
PHP-CGI远程代码执行漏洞分析与防范
2017/05/07 PHP
PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
2018/04/20 PHP
jquery tools系列 expose 学习
2009/09/06 Javascript
js中的caller和callee属性介绍和例子
2014/06/07 Javascript
jQuery中$.get、$.post、$.getJSON和$.ajax的用法详解
2014/11/19 Javascript
CSS3,HTML5和jQuery搜索框集锦
2014/12/02 Javascript
基于BootstrapValidator的Form表单验证(24)
2016/12/12 Javascript
关于react-router的几种配置方式详解
2017/07/24 Javascript
Angular中点击li标签实现更改颜色的核心代码
2017/12/08 Javascript
vue-router重定向不刷新问题的解决
2018/06/25 Javascript
layui的表单验证支持ajax判断用户名是否重复的实例
2019/09/06 Javascript
vue 组件销毁并重置的实现
2020/01/13 Javascript
JavaScript实时更新当前的时间的示例代码
2020/07/15 Javascript
JS实现拖拽元素时与另一元素碰撞检测
2020/08/27 Javascript
javascript实现点击小图显示大图
2020/11/29 Javascript
Python中列表(list)操作方法汇总
2014/08/18 Python
Python两个整数相除得到浮点数值的方法
2015/03/18 Python
python3基于OpenCV实现证件照背景替换
2018/07/18 Python
Python SQLAlchemy入门教程(基本用法)
2019/11/11 Python
详解python常用命令行选项与环境变量
2020/02/20 Python
深入了解Python 变量作用域
2020/07/24 Python
python 下载文件的多种方法汇总
2020/11/17 Python
Linux系统下升级pip的完整步骤
2021/01/31 Python
Champion官网:美国冠军运动服装
2017/01/25 全球购物
行政处罚事先告知书
2015/07/01 职场文书
2015年度个人工作总结报告
2015/10/24 职场文书
windows安装python超详细图文教程
2021/05/21 Python
CSS实现隐藏搜索框功能(动画正反向序列)
2021/07/21 HTML / CSS
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/06 其他游戏
使用 CSS 构建强大且酷炫的粒子动画效果
2022/08/14 HTML / CSS