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的height()、width()计算动态插入的IMG标签的宽高的问题
Dec 08 Javascript
基于Jquery 解决Ajax请求的页面 浏览器后退前进功能,页面刷新功能实效问题
Dec 11 Javascript
Jquery 监视按键,按下回车键触发某方法的实现代码
May 11 Javascript
在浏览器中实现图片粘贴的jQuery插件-- pasteimg使用指南
Dec 29 Javascript
Vue列表页渲染优化详解
Jul 24 Javascript
JSON创建键值对(key是中文或者数字)方式详解
Aug 24 Javascript
jquery ajax异步提交表单数据的方法
Oct 27 jQuery
基于vue实现移动端圆形旋钮插件效果
Nov 28 Javascript
jQuery模拟html下拉多选框的原生实现方法示例
May 30 jQuery
javascript将扁平的数据转为树形结构的高效率算法
Feb 27 Javascript
微信小程序实现时间戳格式转换
Jul 20 Javascript
JS数组的常用方法整理
Mar 31 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安装攻略:常见问题解答(一)
2006/10/09 PHP
PHP调用wsdl文件类型的接口代码分享
2014/11/19 PHP
php随机生成数字字母组合的方法
2015/03/18 PHP
PHP+MySQL实现模糊查询员工信息功能示例
2018/06/01 PHP
Javascript 网页黑白效果实现代码(兼容IE/FF等)
2010/04/23 Javascript
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
2013/07/09 Javascript
js中继承的几种用法总结(apply,call,prototype)
2013/12/26 Javascript
javascript时间戳和日期字符串相互转换代码(超简单)
2016/06/22 Javascript
JavaScript实现时间倒计时跳转(推荐)
2016/06/28 Javascript
js+html制作简单验证码
2017/02/16 Javascript
使用 Vue.js 仿百度搜索框的实例代码
2017/05/09 Javascript
vue设计一个倒计时秒杀的组件详解
2019/04/06 Javascript
ES6中的迭代器、Generator函数及Generator函数的异步操作方法
2019/05/12 Javascript
webpack打包html里面img后src为“[object Module]”问题
2019/12/22 Javascript
JS数组方法push()、pop()用法实例分析
2020/01/18 Javascript
Python获取文件ssdeep值的方法
2014/10/05 Python
pandas实现选取特定索引的行
2018/04/20 Python
对numpy数据写入文件的方法讲解
2018/07/09 Python
python判断数字是否是超级素数幂
2018/09/27 Python
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
2019/01/05 Python
flask框架jinja2模板与模板继承实例分析
2019/08/01 Python
Python字符串hashlib加密模块使用案例
2020/03/10 Python
传统HTML页面实现模块化加载的方法
2018/10/15 HTML / CSS
SmartBuyGlasses台湾:名牌眼镜,名牌太阳眼镜及隐形眼镜
2017/01/04 全球购物
英国派对礼服和连衣裙购物网站:TFNC London
2018/07/07 全球购物
使用useBean标志初始化BEAN时如何接受初始化参数
2012/02/11 面试题
应届生高等护理求职信
2013/10/12 职场文书
幼儿园实习自我鉴定
2013/12/15 职场文书
运动会解说词50字
2014/01/18 职场文书
毕业生自荐书
2014/02/03 职场文书
初中生自我鉴定
2014/02/04 职场文书
毕业评语大全
2014/05/04 职场文书
爱祖国演讲稿
2014/05/04 职场文书
2014年医德医风工作总结
2014/11/13 职场文书
病危通知书样本
2015/04/17 职场文书
MongoDB安装使用并实现Python操作数据库
2021/06/28 MongoDB