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高级程序设计 学习笔记 js高级技巧
Sep 20 Javascript
JS中showModalDialog 的使用解析
Apr 17 Javascript
Js点击弹出下拉菜单效果实例
Aug 12 Javascript
Javascript获取当前时间函数和时间操作小结
Oct 01 Javascript
AngularJS入门教程之学习环境搭建
Dec 06 Javascript
js获取微信版本号的方法
May 12 Javascript
javascript实现状态栏中文字动态显示的方法
Oct 20 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
Feb 19 Javascript
BootStrap fileinput.js文件上传组件实例代码
Feb 20 Javascript
Vue编写多地区选择组件
Aug 21 Javascript
如何获取TypeScript的声明文件.d.ts
May 01 Javascript
微信小程序基于Taro的分享图片功能实践详解
Jul 12 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
《星际争霸2》终章已出 RTS时代宣告终结
2017/02/07 星际争霸
php分页函数
2006/07/08 PHP
php中几种常见安全设置详解
2010/04/06 PHP
php变量作用域的深入解析
2013/06/03 PHP
PHP中的流(streams)浅析
2015/07/02 PHP
JS类定义原型方法的两种实现的区别评论很多
2007/09/12 Javascript
jQuery学习笔记之DOM对象和jQuery对象
2010/12/22 Javascript
JQuery实现表格中相同单元格合并示例代码
2013/06/26 Javascript
js单例模式的两种方案
2013/10/22 Javascript
jQuery中add()方法用法实例
2015/01/08 Javascript
JS+CSS实现可以凹陷显示选中单元格的方法
2015/03/02 Javascript
jquery使用ul模拟select实现表单美化的方法
2015/08/18 Javascript
JS自定义选项卡函数及用法实例分析
2015/09/02 Javascript
设计模式中的facade外观模式在JavaScript开发中的运用
2016/05/18 Javascript
AngularJS基础 ng-dblclick 指令用法
2016/08/01 Javascript
使用BootStrap实现表格隔行变色及hover变色并在需要时出现滚动条
2017/01/04 Javascript
Bootstrap表单控件学习使用
2017/03/07 Javascript
nuxt.js 缓存实践
2018/06/25 Javascript
Angular4.x Event (DOM事件和自定义事件详解)
2018/10/09 Javascript
vue通过数据过滤实现表格合并
2020/11/30 Javascript
开发Node CLI构建微信小程序脚手架的示例
2020/03/27 Javascript
基于vue和bootstrap实现简单留言板功能
2020/05/30 Javascript
Vue $emit()不能触发父组件方法的原因及解决
2020/07/28 Javascript
Python中的列表知识点汇总
2015/04/14 Python
python3实现微型的web服务器
2019/09/03 Python
pandas和spark dataframe互相转换实例详解
2020/02/18 Python
Numpy(Pandas)删除全为零的列的方法
2020/09/11 Python
CSS3实现滚动条动画效果代码分享
2016/08/03 HTML / CSS
美国CVS药店官网:CVS Pharmacy
2018/07/26 全球购物
毕业生的求职信范文分享
2013/12/04 职场文书
旷课检讨书1000字
2014/02/14 职场文书
邹越感恩父母演讲稿
2014/08/28 职场文书
三好生演讲稿
2014/09/12 职场文书
2015年小学开学寄语
2015/02/27 职场文书
销售员岗位职责范本
2015/04/11 职场文书
用python自动生成日历
2021/04/24 Python