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 相关文章推荐
新闻内页-JS分页
Jun 07 Javascript
Js-$.extend扩展方法使方法参数更灵活
Jan 15 Javascript
javascript版的in_array函数(判断数组中是否存在特定值)
May 09 Javascript
js中style.display=&quot;&quot;无效的解决方法
Oct 30 Javascript
基于JavaScript实现通用tab选项卡(通用性强)
Jan 07 Javascript
基于jquery编写的放大镜插件
Mar 23 Javascript
javascript事件委托的用法及其好处简析
Apr 04 Javascript
Javascript在IE和Firefox浏览器常见兼容性问题总结
Aug 03 Javascript
深入理解vue Render函数
Jul 19 Javascript
element-ui 设置菜单栏展开的方法
Aug 22 Javascript
vue ssr 实现方式(学习笔记)
Jan 18 Javascript
vue选项卡切换的实现案例
Apr 11 Vue.js
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
模拟OICQ的实现思路和核心程序(三)
2006/10/09 PHP
PHP 设置MySQL连接字符集的方法
2011/01/02 PHP
PHP中数组的三种排序方法分享
2012/05/07 PHP
Nginx下配置codeigniter框架方法
2015/04/07 PHP
Laravel中Trait的用法实例详解
2016/03/16 PHP
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
2016/09/26 PHP
php+javascript实现的动态显示服务器运行程序进度条功能示例
2017/08/07 PHP
jquery keypress,keyup,onpropertychange键盘事件
2010/06/25 Javascript
jquery网页元素拖拽插件效果及实现
2013/08/05 Javascript
jquery获得keycode的示例代码
2013/12/30 Javascript
获取中文字符串的实际长度代码
2014/06/05 Javascript
jquery实现炫酷的叠加层自动切换特效
2015/02/01 Javascript
JS原型链怎么理解
2016/06/27 Javascript
bootstrap实现图片自动轮播
2016/12/21 Javascript
nodejs进阶(6)—连接MySQL数据库示例
2017/01/07 NodeJs
JS模拟超市简易收银台小程序代码解析
2017/08/18 Javascript
Webpack 之 babel-loader文件预处理器详解
2018/03/23 Javascript
详解Nodejs内存治理
2018/05/13 NodeJs
深入理解移动前端开发之viewport
2018/10/19 Javascript
babel7.x和webpack4.x配置vue项目的方法步骤
2019/05/12 Javascript
[00:33]2016完美“圣”典风云人物:Sccc宣传片
2016/12/03 DOTA
[01:14:19]NAVI vs Mineski 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
Python获取单个程序CPU使用情况趋势图
2015/03/10 Python
使用Python脚本实现批量网站存活检测遇到问题及解决方法
2016/10/11 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
2019/06/13 Python
Django MEDIA的配置及用法详解
2019/07/25 Python
Python调用JavaScript代码的方法
2020/10/27 Python
Django使用django-simple-captcha做验证码的实现示例
2021/01/07 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
2021/02/01 Python
字中字效果的实现【html5实例】
2016/05/03 HTML / CSS
详解三种方式实现平滑滚动页面到顶部的功能
2019/04/23 HTML / CSS
市场营销专业推荐信
2013/11/03 职场文书
家长给孩子的表扬信
2014/01/17 职场文书
顶撞领导检讨书
2014/01/29 职场文书
复制别人的成功真的会成功吗?
2019/10/17 职场文书
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
2021/04/06 Python